日志采用第三方库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方法存储错误。

logger.Log.Error(err)

具体logrus的详细用法可以查看我的另一篇文章。