mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-30 01:52:26 +08:00
Merge pull request #380 from jbenet/fix/eventlog-init-condition
fix(eventlog) initialization
This commit is contained in:
@ -16,7 +16,8 @@ import (
|
||||
chunk "github.com/jbenet/go-ipfs/importer/chunk"
|
||||
peer "github.com/jbenet/go-ipfs/peer"
|
||||
u "github.com/jbenet/go-ipfs/util"
|
||||
"github.com/jbenet/go-ipfs/util/debugerror"
|
||||
debugerror "github.com/jbenet/go-ipfs/util/debugerror"
|
||||
repo "github.com/jbenet/go-ipfs/repo"
|
||||
)
|
||||
|
||||
const nBitsForKeypairDefault = 4096
|
||||
@ -251,6 +252,8 @@ func identityConfig(nbits int) (config.Identity, error) {
|
||||
return ident, nil
|
||||
}
|
||||
|
||||
// initLogs initializes the event logger at the specified path. It uses the
|
||||
// default log path if no path is provided.
|
||||
func initLogs(logpath string) (config.Logs, error) {
|
||||
if len(logpath) == 0 {
|
||||
var err error
|
||||
@ -259,15 +262,18 @@ func initLogs(logpath string) (config.Logs, error) {
|
||||
return config.Logs{}, debugerror.Wrap(err)
|
||||
}
|
||||
}
|
||||
|
||||
err := initCheckDir(logpath)
|
||||
if err != nil {
|
||||
return config.Logs{}, debugerror.Errorf("logs: %s", err)
|
||||
}
|
||||
|
||||
return config.Logs{
|
||||
conf := config.Logs{
|
||||
Filename: path.Join(logpath, "events.log"),
|
||||
}, nil
|
||||
}
|
||||
err = repo.ConfigureEventLogger(conf)
|
||||
if err != nil {
|
||||
return conf, err
|
||||
}
|
||||
return conf, nil
|
||||
}
|
||||
|
||||
// initCheckDir ensures the directory exists and is writable
|
||||
|
@ -24,6 +24,7 @@ import (
|
||||
u "github.com/jbenet/go-ipfs/util"
|
||||
"github.com/jbenet/go-ipfs/util/debugerror"
|
||||
eventlog "github.com/jbenet/go-ipfs/util/eventlog"
|
||||
repo "github.com/jbenet/go-ipfs/repo"
|
||||
)
|
||||
|
||||
// log is the command logger
|
||||
@ -271,13 +272,13 @@ func callPreCommandHooks(details cmdDetails, req cmds.Request, root *cmds.Comman
|
||||
|
||||
// When the upcoming command may use the config and repo, we know it's safe
|
||||
// for the log config hook to touch the config/repo
|
||||
if details.usesConfigAsInput() && details.usesRepo() {
|
||||
if repo.IsInitialized(req.Context().ConfigRoot) {
|
||||
log.Debug("Calling hook: Configure Event Logger")
|
||||
cfg, err := req.Context().GetConfig()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
configureEventLogger(cfg)
|
||||
repo.ConfigureEventLogger(cfg.Logs)
|
||||
}
|
||||
|
||||
return nil
|
||||
@ -509,24 +510,3 @@ func allInterruptSignals() chan os.Signal {
|
||||
syscall.SIGTERM, syscall.SIGQUIT)
|
||||
return sigc
|
||||
}
|
||||
|
||||
func configureEventLogger(config *config.Config) error {
|
||||
|
||||
if u.Debug {
|
||||
eventlog.Configure(eventlog.LevelDebug)
|
||||
} else {
|
||||
eventlog.Configure(eventlog.LevelInfo)
|
||||
}
|
||||
|
||||
eventlog.Configure(eventlog.LdJSONFormatter)
|
||||
|
||||
rotateConf := eventlog.LogRotatorConfig{
|
||||
Filename: config.Logs.Filename,
|
||||
MaxSizeMB: config.Logs.MaxSizeMB,
|
||||
MaxBackups: config.Logs.MaxBackups,
|
||||
MaxAgeDays: config.Logs.MaxAgeDays,
|
||||
}
|
||||
|
||||
eventlog.Configure(eventlog.OutputRotatingLogFile(rotateConf))
|
||||
return nil
|
||||
}
|
||||
|
28
repo/logs.go
Normal file
28
repo/logs.go
Normal file
@ -0,0 +1,28 @@
|
||||
package repo
|
||||
|
||||
import (
|
||||
util "github.com/jbenet/go-ipfs/util"
|
||||
eventlog "github.com/jbenet/go-ipfs/util/eventlog"
|
||||
config "github.com/jbenet/go-ipfs/config"
|
||||
)
|
||||
|
||||
func ConfigureEventLogger(config config.Logs) error {
|
||||
|
||||
if util.Debug {
|
||||
eventlog.Configure(eventlog.LevelDebug)
|
||||
} else {
|
||||
eventlog.Configure(eventlog.LevelInfo)
|
||||
}
|
||||
|
||||
eventlog.Configure(eventlog.LdJSONFormatter)
|
||||
|
||||
rotateConf := eventlog.LogRotatorConfig{
|
||||
Filename: config.Filename,
|
||||
MaxSizeMB: config.MaxSizeMB,
|
||||
MaxBackups: config.MaxBackups,
|
||||
MaxAgeDays: config.MaxAgeDays,
|
||||
}
|
||||
|
||||
eventlog.Configure(eventlog.OutputRotatingLogFile(rotateConf))
|
||||
return nil
|
||||
}
|
15
repo/repo.go
Normal file
15
repo/repo.go
Normal file
@ -0,0 +1,15 @@
|
||||
package repo
|
||||
|
||||
import util "github.com/jbenet/go-ipfs/util"
|
||||
|
||||
// IsInitialized returns true if the path is home to an initialized IPFS
|
||||
// repository.
|
||||
func IsInitialized(path string) bool {
|
||||
if !util.FileExists(path) {
|
||||
return false
|
||||
}
|
||||
// TODO add logging check
|
||||
// TODO add datastore check
|
||||
// TODO add config file check
|
||||
return true
|
||||
}
|
Reference in New Issue
Block a user