diff --git a/log/format.go b/log/format.go index 613dc33be7..6c1d5942b3 100644 --- a/log/format.go +++ b/log/format.go @@ -14,9 +14,12 @@ import ( "unicode/utf8" ) +var ( + timeFormat = "2006-01-02T15:04:05-0700" + termTimeFormat = "01-02|15:04:05.000" +) + const ( - timeFormat = "2006-01-02T15:04:05-0700" - termTimeFormat = "01-02|15:04:05.000" floatFormat = 'f' termMsgJust = 40 termCtxMaxPadding = 40 @@ -482,3 +485,11 @@ func escapeString(s string) string { } return strconv.Quote(s) } + +func SetTermTimeFormat(format string) { + termTimeFormat = format +} + +func SetTimeFormat(format string) { + timeFormat = format +} diff --git a/node/config.go b/node/config.go index 2e37c23532..baa7a8f50d 100644 --- a/node/config.go +++ b/node/config.go @@ -502,8 +502,13 @@ func (c *Config) warnOnce(w *bool, format string, args ...interface{}) { } type LogConfig struct { - FileRoot string - FilePath string - MaxBytesSize uint - Level string + FileRoot *string + FilePath *string + MaxBytesSize *uint + Level *string + + // TermTimeFormat is the time format used for console logging. + TermTimeFormat *string + // TimeFormat is the time format used for file logging. + TimeFormat *string } diff --git a/node/node.go b/node/node.go index 48f7b4c4be..ef256f77e7 100644 --- a/node/node.go +++ b/node/node.go @@ -86,13 +86,25 @@ func New(conf *Config) (*Node, error) { conf.DataDir = absdatadir } if conf.LogConfig != nil { - logFilePath := "" - if conf.LogConfig.FileRoot == "" { - logFilePath = path.Join(conf.DataDir, conf.LogConfig.FilePath) - } else { - logFilePath = path.Join(conf.LogConfig.FileRoot, conf.LogConfig.FilePath) + if conf.LogConfig.TermTimeFormat != nil && *conf.LogConfig.TermTimeFormat != "" { + log.SetTermTimeFormat(*conf.LogConfig.TermTimeFormat) + } + + if conf.LogConfig.TimeFormat != nil && *conf.LogConfig.TimeFormat != "" { + log.SetTimeFormat(*conf.LogConfig.TimeFormat) + } + + if conf.LogConfig.FileRoot != nil && conf.LogConfig.FilePath != nil && + conf.LogConfig.MaxBytesSize != nil && conf.LogConfig.Level != nil { + // log to file + logFilePath := "" + if *conf.LogConfig.FileRoot == "" { + logFilePath = path.Join(conf.DataDir, *conf.LogConfig.FilePath) + } else { + logFilePath = path.Join(*conf.LogConfig.FileRoot, *conf.LogConfig.FilePath) + } + log.Root().SetHandler(log.NewFileLvlHandler(logFilePath, *conf.LogConfig.MaxBytesSize, *conf.LogConfig.Level)) } - log.Root().SetHandler(log.NewFileLvlHandler(logFilePath, conf.LogConfig.MaxBytesSize, conf.LogConfig.Level)) } if conf.Logger == nil { conf.Logger = log.New()