nightingale/vendor/github.com/toolkits/pkg/logger/config.go

64 lines
1.5 KiB
Go
Raw Normal View History

2020-09-26 17:02:52 +08:00
package logger
import (
"fmt"
"time"
)
type LogConfig struct {
Type string // syslog/stderr/std/file
Level string // DEBUG/INFO/WARNING/ERROR/FATAL
SyslogPriority string // local0-7
SyslogSeverity string
FileName string
FileRotateCount int
FileRotateSize uint64
FileFlushDuration time.Duration
RotateByHour bool
KeepHours uint // make sense when RotateByHour is T
}
func initFromConfig(log *Logger,
sb *syslogBackend,
fb *FileBackend,
config LogConfig) error {
if config.Type == "stderr" || config.Type == "std" {
log.LogToStderr()
log.SetSeverity(config.Level)
return nil
}
var err error
if config.Type == "syslog" {
if sb, err = NewSyslogBackend(config.SyslogPriority, config.SyslogSeverity); err != nil {
return err
}
log.SetLogging(config.Level, sb)
} else if config.Type == "file" {
if fb, err = NewFileBackend(config.FileName); err != nil {
return err
}
log.SetLogging(config.Level, fb)
fb.Rotate(config.FileRotateCount, config.FileRotateSize)
fb.SetFlushDuration(config.FileFlushDuration)
fb.SetRotateByHour(config.RotateByHour)
fb.SetKeepHours(config.KeepHours)
} else {
return fmt.Errorf("unknown log type: %s", config.Type)
}
return nil
}
func Init(config LogConfig) error {
return initFromConfig(&logging, sysback, fileback, config)
}
func NewLoggerFromConfig(config LogConfig) (Logger, error) {
var log Logger
var fb *FileBackend = nil
var sb *syslogBackend = nil
err := initFromConfig(&log, sb, fb, config)
return log, err
}