zap 自定義日誌格式 go日誌歸檔(基於zap)

2021-10-12 00:07:16 字數 1772 閱讀 8065

實現乙個基於 uber-go/zap 日誌功能的日誌檔案歸檔模組

zap 本身支援日誌分級,在寫入檔案的時候選擇好輸出路徑

檔案大小切割借助了第三方庫 lumberjack ,可以選擇檔案的大小來切割

(logoptions 中存放一些配置)

func (c *logoptions) sizedivisionwriter(filename string) io.writer 

return hook

}

按時間切割可是借助到了第三方的庫file-rotatelogs

func (c *logoptions) timedivisionwriter(filename string) io.writer 

return hook

}

logoptions的timeunit可以選擇切割單元,例如按小時切割的日誌為server.log.2019091123

c := logger.new()

c.setdivision("time") // 設定歸檔方式,"time"時間歸檔 "size" 檔案大小歸檔,檔案大小等可以在配置檔案配置

c.settimeunit(logde.minute) // 時間歸檔 可以設定切割單位

c.setencoding("json") // 輸出格式 "json" 或者 "console"

c.setinfofile("./logs/server.log") // 設定info級別日誌

c.seterrorfile("./logs/server_err.log") // 設定warn級別日誌

c.initlogger()

logger.info("info level test")

logger.info("this is a log", logger.with("trace", "12345677")) // 帶引數

logger.error("this is a log", logger.witherror("error", errors.new("this is a new error"))) // 帶error

再寫個簡單的benchmark

benchmarklogger/logde_logger_without_fields-4            3000000               563 ns/op

benchmarklogger/logde_logger_with_fields-4 2000000 637 ns/op

benchmarklogger/logde_logger_without_fields_write_into_file-4 200000 13021 ns/op

benchmarklogger/logde_logger_with_fields_write_into_file-4 100000 12606 ns/op

寫得粗略,慢慢改改。

Apache自定義日誌格式

1 apache日誌引數說明 apache日誌格式字串的含義 百分號 apache2.0.44或更高的版本 a 遠端ip位址 a 本機ip位址 b 除http頭以外傳送的位元組數 b 以clf格式顯示的除http頭以外傳送的位元組數,也就是當沒有位元組傳送時顯示 而不是0。c 在請求中傳送給服務端的...

Tomcat日誌格式自定義

設定日誌顯示資訊格式,預設情況下,tomcat的訪問日誌是不記錄的。需要在serve.xml中修改配置,去掉注釋。將注釋去掉即可。如果要調整日誌記錄的字段,需要修改pattern屬性值,common是預設的屬性,其值為 h l u t r s b 各符號表示為 下面描述摘自tomcat官方文件 通常...

nginx自定義日誌格式

nginx日誌格式的設計 根據開發要求我們要在nginx的日誌中列印一些特殊資訊,所以必須自定義一些日誌,設定user id的預設值 set user id 0 設定user kind的預設值 set user kind 設定uuid的預設值 nginx中location模組的詳細引數介紹 ngin...