mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-18 23:16:49 +00:00
* First pass at adding new logging system * NewLogger * NewLogger * WIP * silly bug fix * :D removed files * removed old logging interface * added tests * added tests * Started to add new lines to all f calls * Added subsystem log types * Logger improvements * Further performance improvements * changes to logger and sublogger creation * Renamed Logging types * removed old print statement * changes based on feedback * moved sublogger types to own file * :) * added console as output type * added get level command * added get/set log level via grpc command * added check for output being empty for migration support * first pass at log rotation * added log rotation * :D derp fixed * added tests * changes based on feedback * changed log type * comments * renamed file -> fileSettings * typo fix * changes based on feedback * gofmt ran on additional files * gofmt ran on additional files
90 lines
1.9 KiB
Go
90 lines
1.9 KiB
Go
package logger
|
|
|
|
import (
|
|
"io"
|
|
"sync"
|
|
)
|
|
|
|
const timestampFormat = " 02/01/2006 15:04:05 "
|
|
|
|
const spacer = "|"
|
|
|
|
// Config holds configuration settings loaded from bot config
|
|
type Config struct {
|
|
Enabled *bool `json:"enabled"`
|
|
SubLoggerConfig
|
|
LoggerFileConfig *loggerFileConfig `json:"fileSettings,omitempty"`
|
|
AdvancedSettings advancedSettings `json:"advancedSettings"`
|
|
SubLoggers []SubLoggerConfig `json:"subloggers,omitempty"`
|
|
}
|
|
|
|
type advancedSettings struct {
|
|
Spacer string `json:"spacer"`
|
|
TimeStampFormat string `json:"timeStampFormat"`
|
|
Headers headers `json:"headers"`
|
|
}
|
|
|
|
type headers struct {
|
|
Info string `json:"info"`
|
|
Warn string `json:"warn"`
|
|
Debug string `json:"debug"`
|
|
Error string `json:"error"`
|
|
}
|
|
|
|
// SubLoggerConfig holds sub logger configuration settings loaded from bot config
|
|
type SubLoggerConfig struct {
|
|
Name string `json:"name,omitempty"`
|
|
Level string `json:"level"`
|
|
Output string `json:"output"`
|
|
}
|
|
|
|
type loggerFileConfig struct {
|
|
FileName string `json:"filename,omitempty"`
|
|
Rotate *bool `json:"rotate,omitempty"`
|
|
MaxSize int64 `json:"maxsize,omitempty"`
|
|
}
|
|
|
|
// Logger each instance of logger settings
|
|
type Logger struct {
|
|
Timestamp string
|
|
InfoHeader, ErrorHeader, DebugHeader, WarnHeader string
|
|
Spacer string
|
|
}
|
|
|
|
type Levels struct {
|
|
Info, Debug, Warn, Error bool
|
|
}
|
|
|
|
type subLogger struct {
|
|
name string
|
|
Levels
|
|
output io.Writer
|
|
}
|
|
|
|
type LogEvent struct {
|
|
data []byte
|
|
output io.Writer
|
|
}
|
|
|
|
type multiWriter struct {
|
|
writers []io.Writer
|
|
mu sync.Mutex
|
|
}
|
|
|
|
var (
|
|
logger = &Logger{}
|
|
FileLoggingConfiguredCorrectly bool
|
|
GlobalLogConfig = &Config{} // GlobalLogConfig hold global configuration options for logger
|
|
GlobalLogFile = &Rotate{}
|
|
|
|
eventPool = &sync.Pool{
|
|
New: func() interface{} {
|
|
return &LogEvent{
|
|
data: make([]byte, 0, 80),
|
|
}
|
|
},
|
|
}
|
|
|
|
LogPath string
|
|
)
|