代码拉取完成,页面将自动刷新
package driver
import (
rotatelogs "github.com/lestrrat-go/file-rotatelogs"
"github.com/rifflock/lfshook"
"github.com/sirupsen/logrus"
"log"
"os"
)
type LoggerOptions struct {
LogName string `yaml:"log_name"`
}
var loggerHandler *logrus.Logger
var loggerOptions *LoggerOptions
func LoggerInit(config *LoggerOptions) {
loggerOptions = config
_ = LoggerInstance()
}
func LoggerInstance() *logrus.Logger {
if loggerHandler != nil {
return loggerHandler
}
if loggerOptions == nil {
log.Fatal("日志配置不正确")
}
loggerHandler = logrus.New()
// 设置日志级别为xx以及以上
loggerHandler.SetLevel(logrus.InfoLevel)
//loggerHandler.SetReportCaller(true) // 显示行号等信息
//JSON在生产中通常只在使用Splunk或Logstash等工具进行日志聚合时才有用。
// 设置日志格式为json格式
loggerHandler.SetFormatter(&logrus.TextFormatter{
// PrettyPrint: true,//格式化json
TimestampFormat: "2006-01-02 15:04:05", //时间格式化
})
// 设置将日志输出到标准输出(默认的输出为stderr,标准错误)
// 日志消息输出可以是任意的io.writer类型
loggerHandler.SetOutput(os.Stdout)
//这是我在window上的测试代码,文件名自己修改
writer, err := rotatelogs.New(
//这是分割代码的命名规则,要和下面WithRotationTime时间精度一致。要是分钟都是分钟
loggerOptions.LogName,
// WithLinkName为最新的日志建立软连接,以方便随着找到当前日志文件。windows报错没权限
// rotatelogs.WithLinkName(logName),
//文件切割之间的间隔。默认情况下,日志每86400秒/一天旋转一次。注意:记住要利用时间。持续时间值。
// rotatelogs.WithRotationTime(time.Second*3),
// WithMaxAge和WithRotationCount二者只能设置一个,
// WithMaxAge设置文件清理前的最长保存时间,
// WithRotationCount设置文件清理前最多保存的个数。 默认情况下,此选项是禁用的。
// rotatelogs.WithMaxAge(time.Second*30),//默认每7天清除下日志文件
rotatelogs.WithMaxAge(-1), //需要手动禁用禁用 默认情况下不清除日志,
rotatelogs.WithRotationCount(2), //清除除最新2个文件之外的日志,默认禁用
)
if err != nil {
log.Fatal("config local file system for logger error: %v", err)
}
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{
// PrettyPrint: true,//格式化json
TimestampFormat: "2006-01-02 15:04:05", //时间格式化
})
loggerHandler.AddHook(lfsHook)
return loggerHandler
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。