59 lines
1.4 KiB
Go
59 lines
1.4 KiB
Go
package main
|
||
|
||
import (
|
||
"fmt"
|
||
"os"
|
||
"time"
|
||
|
||
rotatelogs "github.com/lestrrat-go/file-rotatelogs"
|
||
"github.com/rifflock/lfshook"
|
||
log "github.com/sirupsen/logrus"
|
||
)
|
||
|
||
func init() {
|
||
//日志初始化
|
||
//log.SetOutput(os.Stdout)
|
||
log.SetLevel(log.DebugLevel)
|
||
log.AddHook(newLfsHook(72))
|
||
}
|
||
|
||
func newLfsHook(maxRemainCnt uint) log.Hook {
|
||
//检查与创建日志文件夹
|
||
_, err := os.Stat("logs")
|
||
if os.IsNotExist(err) {
|
||
os.Mkdir("logs", 0755)
|
||
}
|
||
|
||
logName := fmt.Sprintf(`logs/%s`, APPNAME)
|
||
writer, err := rotatelogs.New(
|
||
logName+"%Y%m%d.log",
|
||
// WithLinkName为最新的日志建立软连接,以方便随着找到当前日志文件
|
||
rotatelogs.WithLinkName(logName),
|
||
|
||
// WithRotationTime设置日志分割的时间,这里设置为一小时分割一次
|
||
rotatelogs.WithRotationTime(24*time.Hour),
|
||
|
||
// WithMaxAge和WithRotationCount二者只能设置一个,
|
||
// WithMaxAge设置文件清理前的最长保存时间,
|
||
// WithRotationCount设置文件清理前最多保存的个数。
|
||
//rotatelogs.WithMaxAge(time.Hour*24),
|
||
rotatelogs.WithRotationCount(maxRemainCnt),
|
||
)
|
||
|
||
if err != nil {
|
||
panic("config local file system for logger error: " + err.Error())
|
||
}
|
||
log.SetLevel(log.DebugLevel)
|
||
|
||
lfsHook := lfshook.NewHook(lfshook.WriterMap{
|
||
log.DebugLevel: writer,
|
||
log.InfoLevel: writer,
|
||
log.WarnLevel: writer,
|
||
log.ErrorLevel: writer,
|
||
log.FatalLevel: writer,
|
||
log.PanicLevel: writer,
|
||
}, &log.TextFormatter{DisableColors: true})
|
||
|
||
return lfsHook
|
||
}
|