Files

64 lines
1.1 KiB
Go
Raw Normal View History

2021-11-02 09:43:19 +08:00
package logger
import (
"io"
"os"
log "github.com/sirupsen/logrus"
)
type Logger struct {
*Option
Logger *log.Logger
}
type Option struct {
File string `json:"file"`
LeastDay uint `json:"least_day"`
Level string `json:"level"`
IsStdout bool `json:"is_stdout"`
}
var logger *log.Logger
var loggerLevel = map[string]log.Level{
"debug": log.DebugLevel,
"info": log.InfoLevel,
"warn": log.WarnLevel,
"error": log.ErrorLevel,
}
func (this *Logger) level() log.Level {
if _, has := loggerLevel[this.Level]; !has {
return log.ErrorLevel
}
return loggerLevel[this.Level]
}
func (this *Logger) Load() {
logger = this.Logger
}
func (this *Logger) Init(option *Option) *Logger {
this.Option = option
logger = log.New()
logger.SetFormatter(&log.JSONFormatter{TimestampFormat: "2006-01-02 15:04:05"})
logger.SetReportCaller(true)
logger.AddHook(NewHook(this.File, 0, this.LeastDay))
if this.IsStdout {
logger.SetOutput(io.MultiWriter(os.Stdout))
}
logger.SetFormatter(formatter(true))
logger.SetLevel(this.level())
this.Logger = logger
return this
}
func NewLogger() *Logger {
return &Logger{}
}