go客户之日志
精选
原创
©著作权归作者所有:来自51CTO博客作者zzxiaoma的原创作品,请联系作者获取转载授权,否则将追究法律责任
日志采用第三方库github.com/sirupsen/logrus
package logger
import (
"path"
"time"
"github.com/lestrrat-go/file-rotatelogs"
"github.com/rifflock/lfshook"
"github.com/sirupsen/logrus"
)
var Log = logrus.New()
func init() {
ConfigLocalFileSystemLogger("logs/", "cus", time.Hour*24*365, time.Hour*24*30)
}
func ConfigLocalFileSystemLogger(logPath string, logFileName string, maxAge time.Duration, rotationTime time.Duration) {
baseLogPaht := path.Join(logPath, logFileName)
writer, err := rotatelogs.New(
baseLogPaht+".%Y%m%d%H%M",
rotatelogs.WithLinkName(baseLogPaht),
rotatelogs.WithMaxAge(maxAge),
rotatelogs.WithRotationTime(rotationTime),
)
if err != nil {
Log.Errorf("config local file system logger error", err)
}
Log.SetLevel(logrus.DebugLevel)
lfHook := 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})
Log.AddHook(lfHook)
}
ConfigLocalFileSystemLogger("logs/", "cus", time.Hour*24*365, time.Hour*24*30)方法用于对日志进行设置,第一个参数是存放路径,第二个是文件名,第三个是存放最长时间,第四个参数是文件多长时间生成一个。这样就可以30天生成一个文件,1年以前的文件自动删除。文件名为cus开头后面是时间字符串。
使用方法:logger是包,Log是上面文件定义的对象,var Log = logrus.New(),使用Error方法存储错误。
具体logrus的详细用法可以查看我的另一篇文章。