64 lines
1.1 KiB
Go
64 lines
1.1 KiB
Go
![]() |
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{}
|
||
|
}
|