From 0e6b653b4f197f67c75a829f6462ce9d31516866 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20Rasc=C3=A3o?= Date: Thu, 25 Nov 2021 22:58:26 +0000 Subject: [PATCH] log: expose output writer interface (#845) This allows applications that import GCT to define their own writer on their own terms. --- log/logger.go | 12 ++++++++++-- log/logger_setup.go | 10 +++++----- log/sublogger_types.go | 2 +- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/log/logger.go b/log/logger.go index 72e46338..9a2e94fe 100644 --- a/log/logger.go +++ b/log/logger.go @@ -19,12 +19,20 @@ func NewSubLogger(name string) (*SubLogger, error) { return nil, errEmptyLoggerName } name = strings.ToUpper(name) - if _, ok := subLoggers[name]; ok { + if _, ok := SubLoggers[name]; ok { return nil, errSubLoggerAlreadyregistered } return registerNewSubLogger(name), nil } +// SetOutput overrides the default output with a new writer +func (s *SubLogger) SetOutput(o io.Writer) { + RWM.Lock() + defer RWM.Unlock() + + s.output = o +} + func newLogger(c *Config) *Logger { return &Logger{ Timestamp: c.AdvancedSettings.TimeStampFormat, @@ -75,7 +83,7 @@ func CloseLogger() error { } func validSubLogger(s string) (bool, *SubLogger) { - if v, found := subLoggers[s]; found { + if v, found := SubLoggers[s]; found { return true, v } return false, nil diff --git a/log/logger_setup.go b/log/logger_setup.go index c075ca55..a70fd72c 100644 --- a/log/logger_setup.go +++ b/log/logger_setup.go @@ -68,7 +68,7 @@ func configureSubLogger(logger, levels string, output io.Writer) error { logPtr.output = output logPtr.Levels = splitLevel(levels) - subLoggers[logger] = logPtr + SubLoggers[logger] = logPtr return nil } @@ -95,9 +95,9 @@ func SetupGlobalLogger() { } } - for x := range subLoggers { - subLoggers[x].Levels = splitLevel(GlobalLogConfig.Level) - subLoggers[x].output = getWriters(&GlobalLogConfig.SubLoggerConfig) + for x := range SubLoggers { + SubLoggers[x].Levels = splitLevel(GlobalLogConfig.Level) + SubLoggers[x].output = getWriters(&GlobalLogConfig.SubLoggerConfig) } logger = newLogger(GlobalLogConfig) @@ -128,7 +128,7 @@ func registerNewSubLogger(logger string) *SubLogger { } temp.Levels = splitLevel("INFO|WARN|DEBUG|ERROR") - subLoggers[logger] = &temp + SubLoggers[logger] = &temp return &temp } diff --git a/log/sublogger_types.go b/log/sublogger_types.go index e264a14e..36a44ab1 100644 --- a/log/sublogger_types.go +++ b/log/sublogger_types.go @@ -4,7 +4,7 @@ import "io" // Global vars related to the logger package var ( - subLoggers = map[string]*SubLogger{} + SubLoggers = map[string]*SubLogger{} Global *SubLogger BackTester *SubLogger