mirror of
https://github.com/ipfs/kubo.git
synced 2025-07-01 19:24:14 +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"
|
chunk "github.com/jbenet/go-ipfs/importer/chunk"
|
||||||
peer "github.com/jbenet/go-ipfs/peer"
|
peer "github.com/jbenet/go-ipfs/peer"
|
||||||
u "github.com/jbenet/go-ipfs/util"
|
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
|
const nBitsForKeypairDefault = 4096
|
||||||
@ -251,6 +252,8 @@ func identityConfig(nbits int) (config.Identity, error) {
|
|||||||
return ident, nil
|
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) {
|
func initLogs(logpath string) (config.Logs, error) {
|
||||||
if len(logpath) == 0 {
|
if len(logpath) == 0 {
|
||||||
var err error
|
var err error
|
||||||
@ -259,15 +262,18 @@ func initLogs(logpath string) (config.Logs, error) {
|
|||||||
return config.Logs{}, debugerror.Wrap(err)
|
return config.Logs{}, debugerror.Wrap(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err := initCheckDir(logpath)
|
err := initCheckDir(logpath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return config.Logs{}, debugerror.Errorf("logs: %s", err)
|
return config.Logs{}, debugerror.Errorf("logs: %s", err)
|
||||||
}
|
}
|
||||||
|
conf := config.Logs{
|
||||||
return config.Logs{
|
|
||||||
Filename: path.Join(logpath, "events.log"),
|
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
|
// initCheckDir ensures the directory exists and is writable
|
||||||
|
@ -24,6 +24,7 @@ import (
|
|||||||
u "github.com/jbenet/go-ipfs/util"
|
u "github.com/jbenet/go-ipfs/util"
|
||||||
"github.com/jbenet/go-ipfs/util/debugerror"
|
"github.com/jbenet/go-ipfs/util/debugerror"
|
||||||
eventlog "github.com/jbenet/go-ipfs/util/eventlog"
|
eventlog "github.com/jbenet/go-ipfs/util/eventlog"
|
||||||
|
repo "github.com/jbenet/go-ipfs/repo"
|
||||||
)
|
)
|
||||||
|
|
||||||
// log is the command logger
|
// 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
|
// 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
|
// 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")
|
log.Debug("Calling hook: Configure Event Logger")
|
||||||
cfg, err := req.Context().GetConfig()
|
cfg, err := req.Context().GetConfig()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
configureEventLogger(cfg)
|
repo.ConfigureEventLogger(cfg.Logs)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -509,24 +510,3 @@ func allInterruptSignals() chan os.Signal {
|
|||||||
syscall.SIGTERM, syscall.SIGQUIT)
|
syscall.SIGTERM, syscall.SIGQUIT)
|
||||||
return sigc
|
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