1
0
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:
Brian Tiger Chow
2014-11-24 16:14:19 -08:00
4 changed files with 57 additions and 28 deletions

View File

@ -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

View File

@ -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
View 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
View 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
}