|
@@ -3,10 +3,11 @@ package utils
|
|
|
import (
|
|
|
"encoding/json"
|
|
|
"github.com/beego/beego/v2/core/logs"
|
|
|
+ rotatelogs "github.com/lestrrat-go/file-rotatelogs"
|
|
|
"github.com/sirupsen/logrus"
|
|
|
- "gopkg.in/natefinch/lumberjack.v2"
|
|
|
"os"
|
|
|
"path"
|
|
|
+ "time"
|
|
|
)
|
|
|
|
|
|
const (
|
|
@@ -37,10 +38,8 @@ func init() {
|
|
|
|
|
|
// 打开文件
|
|
|
logFileName := path.Join(logPath, logFile)
|
|
|
- logConf := getDefaultLogrusConfig(logFileName)
|
|
|
- // 使用滚动压缩方式记录日志
|
|
|
- rolling(FileLog, logConf)
|
|
|
- //rolling(bLogFileName)
|
|
|
+
|
|
|
+ rolling(FileLog, logFileName, LogMaxDays)
|
|
|
// 设置日志输出JSON格式
|
|
|
jsonFormat := new(logrus.JSONFormatter)
|
|
|
jsonFormat.DisableHTMLEscape = true
|
|
@@ -51,7 +50,6 @@ func init() {
|
|
|
// 设置日志记录级别
|
|
|
//FileLog.SetLevel(logrus.DebugLevel)
|
|
|
|
|
|
- //FileLog.Info("abc")
|
|
|
initBinlog()
|
|
|
initApiLog()
|
|
|
initFileLogData()
|
|
@@ -106,10 +104,8 @@ func initApiLog() {
|
|
|
|
|
|
// 打开文件
|
|
|
logFileName := path.Join(logPath, logFile)
|
|
|
- logConf := getDefaultLogrusConfig(logFileName)
|
|
|
- // 使用滚动压缩方式记录日志
|
|
|
- rolling(ApiLog, logConf)
|
|
|
- //rolling(bLogFileName)
|
|
|
+
|
|
|
+ rolling(ApiLog, logFileName, LogMaxDays)
|
|
|
// 设置日志输出JSON格式
|
|
|
jsonFormat := new(logrus.JSONFormatter)
|
|
|
jsonFormat.DisableHTMLEscape = true
|
|
@@ -130,9 +126,8 @@ func initFileLogData() {
|
|
|
|
|
|
// 打开文件
|
|
|
logFileName := path.Join(logPath, logFile)
|
|
|
- logConf := getDefaultLogrusConfig(logFileName)
|
|
|
- // 使用滚动压缩方式记录日志
|
|
|
- rolling(FileLogData, logConf)
|
|
|
+
|
|
|
+ rolling(FileLogData, logFileName, LogMaxDays)
|
|
|
// 设置日志输出JSON格式
|
|
|
jsonFormat := new(logrus.JSONFormatter)
|
|
|
jsonFormat.DisableHTMLEscape = true
|
|
@@ -140,24 +135,6 @@ func initFileLogData() {
|
|
|
FileLogData.SetFormatter(jsonFormat)
|
|
|
}
|
|
|
|
|
|
-// 日志滚动设置
|
|
|
-func rolling(fLog *logrus.Logger, config *lumberjack.Logger) {
|
|
|
- // 设置输出
|
|
|
- fLog.SetOutput(config)
|
|
|
-}
|
|
|
-
|
|
|
-func getDefaultLogrusConfig(logFile string) (config *lumberjack.Logger) {
|
|
|
- config = &lumberjack.Logger{
|
|
|
- Filename: logFile, //日志文件位置
|
|
|
- MaxSize: 256, // 单文件最大容量,单位是MB
|
|
|
- MaxBackups: 0, // 最大保留过期文件个数,0表示默认保留
|
|
|
- MaxAge: LogMaxDays, // 保留过期文件的最大时间间隔,单位是天
|
|
|
- Compress: false, // 是否需要压缩滚动日志, 使用的 gzip 压缩
|
|
|
- LocalTime: true,
|
|
|
- }
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
func getDefaultLogConfig() logConfig {
|
|
|
return logConfig{
|
|
|
FileName: "",
|
|
@@ -170,3 +147,26 @@ func getDefaultLogConfig() logConfig {
|
|
|
//Perm: "",
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+// 日志滚动设置
|
|
|
+func rolling(fLog *logrus.Logger, logFileName string, maxAge int) {
|
|
|
+ // 设置输出
|
|
|
+ if maxAge == 0 {
|
|
|
+ maxAge = LogMaxDays
|
|
|
+ }
|
|
|
+ content, err := rotatelogs.New(
|
|
|
+ logFileName+"-%Y%m%d",
|
|
|
+ //rotatelogs.WithLinkName("./log/cli.log"), // 生成软链,指向最新日志文件
|
|
|
+ rotatelogs.WithClock(rotatelogs.Local),
|
|
|
+ //MaxAge and RotationCount cannot be both set 两者不能同时设置
|
|
|
+ rotatelogs.WithRotationSize(1<<28), //256mb
|
|
|
+ rotatelogs.WithMaxAge(time.Duration(maxAge*24)*time.Hour), //clear
|
|
|
+ //rotatelogs.WithRotationCount(5), //number 默认7份 大于7份 或到了清理时间 开始清理
|
|
|
+ rotatelogs.WithRotationTime(24*time.Hour), //rotate 最小为1分钟轮询。默认60s 低于1分钟就按1分钟来
|
|
|
+ )
|
|
|
+ if err != nil {
|
|
|
+ panic("failed to create rotatelogs: " + err.Error())
|
|
|
+ }
|
|
|
+ fLog.SetOutput(content)
|
|
|
+ return
|
|
|
+}
|