logrus的使用及格式定製
在查詢許多資料後,整理了以下程式碼:
package config
import (
"fmt"
nested "github.com/antonfisher/nested-logrus-formatter"
"github.com/lestrrat-go/file-rotatelogs"
"github.com/rifflock/lfshook"
"github.com/sirupsen/logrus"
"path/filepath"
"runtime"
"time"
)
var (
Log *logrus.Logger
)
func InitLogger() {
Log = logrus.New()
hook := NewLfsHook(filepath.Join(Cf.Logger.Path, "pack"), 0, 5)
Log.AddHook(hook)
Log.SetFormatter(formatter(true))
Log.SetReportCaller(true)
}
func formatter(isConsole bool) *nested.Formatter {
fmtter := &nested.Formatter{
HideKeys: true,
TimestampFormat: "2006-01-02 15:04:05",
CallerFirst: true,
CustomCallerFormatter: func(frame *runtime.Frame) string {
funcInfo := runtime.FuncForPC(frame.PC)
if funcInfo == nil {
return "error during runtime.FuncForPC"
}
fullPath, line := funcInfo.FileLine(frame.PC)
return fmt.Sprintf(" [%v:%v]", filepath.Base(fullPath), line)
},
}
if isConsole {
fmtter.NoColors = false
} else {
fmtter.NoColors = true
}
return fmtter
}
func NewLfsHook(logName string, rotationTime time.Duration, leastDay uint) logrus.Hook {
writer, err := rotatelogs.New(
// 日誌檔案
logName+".%Y%m%d%H%M%S",
// 日誌週期(預設每86400秒/一天旋轉一次)
//rotatelogs.WithRotationTime(rotationTime),
// 清除歷史 (WithMaxAge和WithRotationCount只能選其一)
//rotatelogs.WithMaxAge(time.Hour*24*7), //預設每7天清除下日誌檔案
rotatelogs.WithRotationCount(leastDay), //只保留最近的N個日誌檔案
)
if err != nil {
panic(err)
}
// 可設定按不同level建立不同的檔名
lfsHook := lfshook.NewHook(lfshook.WriterMap{
logrus.DebugLevel: writer,
logrus.InfoLevel: writer,
logrus.WarnLevel: writer,
logrus.ErrorLevel: writer,
logrus.FatalLevel: writer,
logrus.PanicLevel: writer,
//}, &logrus.JSONFormatter{TimestampFormat: "2006-01-02 15:04:05"})
}, formatter(false))
return lfsHook
}
終端輸出樣式:
日誌檔案輸出樣式:
相關文章
- Flask——配置格式及使用Flask
- Linux系統如何定製History輸出格式Linux
- golang常用庫:日誌記錄庫-logrus使用Golang
- Gin 框架 - 使用 logrus 進行日誌記錄框架
- 使用 Dockerfile 定製映象Docker
- svg製作及使用SVG
- 新特性解讀 | 針對使用者定製不同格式執行計劃
- 使用 Dockerfile 定製映象【轉】Docker
- 如何使用objectMapper設定java.time.Instant的字串格式?ObjectAPPJava字串
- RecyclerView定製:通用ItemDecoration及全展開RecyclerView的實現View
- word標題格式怎麼設定 word標題格式設定的方法
- 描述下你所瞭解的圖片格式及使用場景
- npm私有庫服務搭建及規範定製NPM
- Golang一日一庫之logrusGolang
- iris 系列文章 封裝 logrus 日誌封裝
- C# 使用JavaScript設定或驗證 PDF中的文字域格式C#JavaScript
- 使用者定製再度興起,定製產品小程式將迎來春天!
- 04-spring-boot-resttemplate netty定製使用SpringbootRESTNetty
- PSQL基本使用(定製維護指令碼)SQL指令碼
- PSQL基本使用(定製PSQL提示符)SQL
- span元素設定title及$event使用
- 使用.format格式化json格式的入參ORMJSON
- .NET中使用DebuggerDisplay輕鬆定製除錯除錯
- app定製的價格APP
- python if判斷的使用格式Python
- Nginx日誌格式設定Nginx
- 圖片格式及空間的介紹
- 簡單介紹Vue使用echarts定製特殊的儀表盤VueEcharts
- 使用webpack4.x定製自己的前端開發環境Web前端開發環境
- 定製Tinycore
- Go第三方日誌庫logrusGo
- logrus hook輸出日誌到本地磁碟Hook
- 多使用者商城系統定製開發
- 使用 PubSubHubbub 製作 RSS 定時器 —— Laravel RSS (三)定時器Laravel
- 如何定製 Spring Boot 的 Banner?Spring Boot
- springboot中圖示的定製Spring Boot
- 在C#中使用Json.Net進行序列化和反序列化及定製化C#JSON
- 02_函式定義及使用函式函式