2023-10-30 06:55:49 +00:00
|
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
"fmt"
|
|
|
|
|
|
"os"
|
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
|
|
rotatelogs "github.com/lestrrat-go/file-rotatelogs"
|
|
|
|
|
|
"github.com/rifflock/lfshook"
|
|
|
|
|
|
"github.com/sirupsen/logrus"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
2025-08-13 07:56:32 +00:00
|
|
|
|
/*
|
|
|
|
|
|
注意,当天文件放项目根目录下
|
|
|
|
|
|
|
|
|
|
|
|
env LOGLEVEL=debug
|
|
|
|
|
|
*/
|
2023-10-30 06:55:49 +00:00
|
|
|
|
func init() {
|
|
|
|
|
|
//日志初始化
|
2023-10-31 05:57:57 +00:00
|
|
|
|
level := os.Getenv("LOGLEVEL")
|
|
|
|
|
|
|
|
|
|
|
|
switch level {
|
|
|
|
|
|
case "debug":
|
|
|
|
|
|
logrus.SetLevel(logrus.DebugLevel)
|
|
|
|
|
|
case "info":
|
|
|
|
|
|
logrus.SetLevel(logrus.InfoLevel)
|
|
|
|
|
|
case "warn":
|
|
|
|
|
|
logrus.SetLevel(logrus.WarnLevel)
|
|
|
|
|
|
case "error":
|
|
|
|
|
|
logrus.SetLevel(logrus.ErrorLevel)
|
|
|
|
|
|
case "fatal":
|
|
|
|
|
|
logrus.SetLevel(logrus.FatalLevel)
|
|
|
|
|
|
default:
|
|
|
|
|
|
logrus.SetLevel(logrus.PanicLevel)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-10-30 06:55:49 +00:00
|
|
|
|
logrus.AddHook(newLfsHook(72))
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func newLfsHook(maxRemainCnt uint) logrus.Hook {
|
|
|
|
|
|
//检查与创建日志文件夹
|
|
|
|
|
|
_, err := os.Stat("logs")
|
|
|
|
|
|
if os.IsNotExist(err) {
|
|
|
|
|
|
os.Mkdir("logs", 0755)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
logName := fmt.Sprintf(`logs/%s`, "device-wg")
|
|
|
|
|
|
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())
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
}
|