mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-24 23:16:52 +00:00
log: expose output writer interface (#845)
This allows applications that import GCT to define their own writer on their own terms.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user