golang之日志分割
自己学习记录,可以分享给大家,如有不对或不足之处请勿喷!
日志分割和日志钩子框架是使用开源三方的名字叫:file-rotatelogs,lfshook
hook.go
package mlog import ( rotatelogs "github.com/lestrrat-go/file-rotatelogs" "github.com/rifflock/lfshook" "github.com/sirupsen/logrus" "time" ) func NewLfsHook(logName string, maxRemainCnt uint) logrus.Hook { writer, err := rotatelogs.New( logName+".%Y%m%d", //logName+".%Y%m%d%H%M", // 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 { logrus.Panicf("日志文件配置错误,无法记录日志: %v", err) } logrus.SetLevel(logrus.InfoLevel) lfsHook := lfshook.NewHook(lfshook.WriterMap{ logrus.DebugLevel: writer, logrus.InfoLevel: writer, logrus.WarnLevel: writer, logrus.ErrorLevel: writer, logrus.FatalLevel: writer, logrus.PanicLevel: writer, }, &logrus.TextFormatter{DisableColors: true}) return lfsHook }
程序入口:main.go
package main import ( "github.com/sirupsen/logrus" "server/mlog" ) //入口 func main() { fileSplitWriter := mlog.NewLfsHook("./logs/gin.log", 7) logrus.AddHook(fileSplitWriter) }
结果:就会在logs/目录下面生成对应日期切割日志
如何自定义日志可以查阅网上子类很多,或者我的博客里面也记录了!