GO語言實現(xiàn)日志切割的示例詳解
準(zhǔn)備工作
日志記錄對程序排查問題比較關(guān)鍵,記錄下GO中日志選擇,從以下出發(fā)點考慮:
- 日志文件能自動切割,以免過大
- 能記錄從哪個文件哪行代碼調(diào)用的,方便排查問題
- 配置簡單明了
- 庫文件使用人數(shù)較多,穩(wěn)定
經(jīng)過一段時間摸索,最終選擇了Logrus和lumberjack兩個庫,使用人數(shù)都比較多。
安裝兩個庫
go get gopkg.in/natefinch/lumberjack.v2 go get github.com/sirupsen/logrus
代碼
實際中一行配置就可以完成,后續(xù)只用調(diào)用logrus.Debug、logrus.Info同標(biāo)準(zhǔn)庫一樣只用log改為logrus十分簡單明了
logrus.SetOutput(io.MultiWriter(os.Stdout, &lumberjack.Logger{
Filename: "go-log.log",
MaxBackups: 10,
MaxSize: 20,
}))整體代碼如下,基本能滿足實際使用需求
個別需求調(diào)整可以參考這兩個文檔
package main
import (
"io"
"os"
"time"
"github.com/sirupsen/logrus"
"gopkg.in/natefinch/lumberjack.v2"
)
func main() {
// 同時輸出到終端和文件
logrus.SetOutput(io.MultiWriter(os.Stdout, &lumberjack.Logger{
Filename: "go-log.log",
MaxBackups: 10,
MaxSize: 20,
}))
/*只輸出到文件的話只用以下寫法
logrus.SetOutput(&lumberjack.Logger{
Filename: "go-log.log",
MaxBackups: 10,
MaxSize: 20,
})
*/
// 這個在日志中記錄代碼位置,十分有用
logrus.SetReportCaller(true)
// 設(shè)置輸出等級,按實際需求設(shè)置,可以忽略
logrus.SetLevel(logrus.InfoLevel)
logrus.Debug("debug message")
logrus.Infof("info message at %s\n", time.Now().Format("2006-01-02 15:04:05"))
logrus.Error("error message")
}使用效果
logrus.SetReportCaller(true)可以自動在日志當(dāng)中記錄代碼調(diào)用位置,設(shè)置為false時候不開啟

到此這篇關(guān)于GO語言實現(xiàn)日志切割的示例詳解的文章就介紹到這了,更多相關(guān)GO日志切割內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
golang執(zhí)行命令獲取執(zhí)行結(jié)果狀態(tài)(推薦)
這篇文章主要介紹了golang執(zhí)行命令獲取執(zhí)行結(jié)果狀態(tài)的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧2019-11-11
Golang實現(xiàn)自己的Redis(有序集合跳表)實例探究
這篇文章主要為大家介紹了Golang實現(xiàn)自己的Redis(有序集合跳表)實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
Go語言metrics應(yīng)用監(jiān)控指標(biāo)基本使用說明
這篇文章主要為大家介紹了Go語言metrics應(yīng)用監(jiān)控指標(biāo)的基本使用說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02
Golang使用Gin框架實現(xiàn)HTTP上傳文件過程介紹
由于需求中有文件上傳這一個需求,在這里我們就學(xué)習(xí)一下go語言如何上傳文件。本文主要通過表單的方式進(jìn)行文件上傳操作,本文實例為大家分享了Go實現(xiàn)文件上傳操作的具體代碼,供大家參考,具體內(nèi)容如下2023-04-04
Go條件控制語句詳解(if-else、switch和select)
條件語句用于檢查一個條件是否為真,并根據(jù)條件的真假來決定是否執(zhí)行相應(yīng)的代碼,下面這篇文章主要給大家介紹了關(guān)于Go條件控制語句(if-else、switch和select)的相關(guān)資料,需要的朋友可以參考下2024-03-03

