Browse Source

日志修改

xyxie 1 year ago
parent
commit
cda8857fbd
3 changed files with 42 additions and 34 deletions
  1. 3 1
      go.mod
  2. 8 2
      go.sum
  3. 31 31
      utils/logs.go

+ 3 - 1
go.mod

@@ -20,6 +20,7 @@ require (
 	github.com/gonum/stat v0.0.0-20181125101827-41a0da705a5b
 	github.com/gorilla/websocket v1.5.0
 	github.com/kgiannakakis/mp3duration v0.0.0-20191013070830-d834f8d5ed53
+	github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible
 	github.com/minio/minio-go/v7 v7.0.63
 	github.com/mojocn/base64Captcha v1.3.5
 	github.com/nosixtools/solarlunar v0.0.0-20211112060703-1b6dea7b4a19
@@ -34,7 +35,6 @@ require (
 	github.com/xuri/excelize/v2 v2.6.1
 	github.com/yidane/formula v0.0.0-20210902154546-0782e1736717
 	gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
-	gopkg.in/natefinch/lumberjack.v2 v2.2.1
 )
 
 require (
@@ -74,10 +74,12 @@ require (
 	github.com/google/uuid v1.3.0 // indirect
 	github.com/hashicorp/golang-lru v0.5.4 // indirect
 	github.com/jmespath/go-jmespath v0.4.0 // indirect
+	github.com/jonboulle/clockwork v0.4.0 // indirect
 	github.com/josharian/intern v1.0.0 // indirect
 	github.com/json-iterator/go v1.1.12 // indirect
 	github.com/klauspost/compress v1.16.7 // indirect
 	github.com/klauspost/cpuid/v2 v2.2.5 // indirect
+	github.com/lestrrat-go/strftime v1.0.6 // indirect
 	github.com/lib/pq v1.10.7 // indirect
 	github.com/mailru/easyjson v0.7.7 // indirect
 	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect

+ 8 - 2
go.sum

@@ -239,6 +239,8 @@ github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9Y
 github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
 github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
 github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
+github.com/jonboulle/clockwork v0.4.0 h1:p4Cf1aMWXnXAUh8lVfewRBx1zaTSYKrKMF2g3ST4RZ4=
+github.com/jonboulle/clockwork v0.4.0/go.mod h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc=
 github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
 github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
 github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
@@ -265,6 +267,12 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 github.com/ledisdb/ledisdb v0.0.0-20200510135210-d35789ec47e6/go.mod h1:n931TsDuKuq+uX4v1fulaMbA/7ZLLhjc85h7chZGBCQ=
+github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc h1:RKf14vYWi2ttpEmkA4aQ3j4u9dStX2t4M8UM6qqNsG8=
+github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc/go.mod h1:kopuH9ugFRkIXf3YoqHKyrJ9YfUFsckUU9S7B+XP+is=
+github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible h1:Y6sqxHMyB1D2YSzWkLibYKgg+SwmyFU9dF2hn6MdTj4=
+github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible/go.mod h1:ZQnN8lSECaebrkQytbHj4xNgtg8CR7RYXnPok8e0EHA=
+github.com/lestrrat-go/strftime v1.0.6 h1:CFGsDEt1pOpFNU+TJB0nhz9jl+K0hZSLE205AhTIGQQ=
+github.com/lestrrat-go/strftime v1.0.6/go.mod h1:f7jQKgV5nnJpYgdEasS+/y7EsTb8ykN2z68n3TtcTaw=
 github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
 github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw=
@@ -604,8 +612,6 @@ gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
 gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
-gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
-gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
 gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

+ 31 - 31
utils/logs.go

@@ -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
+}