1. 程式人生 > >Github 中最受歡迎的Go日誌庫集合整理

Github 中最受歡迎的Go日誌庫集合整理

      任何一個系統開發,都離不開完備的日誌系統。go 日誌不同其他語言,比如 java 由於 commons-logging 日誌標準,和不同實現 如log4j,slf4j,logback,單都是統一呼叫標準介面。但是在golang 語言開發中,目前閱讀了幾個開原始碼,都是自己實現了一套日誌記錄標準,並沒有採用go 官方 log 模組。golang's log 模組主要提供了3類介面。分別是 “Print Panic Fatal ”,對每一類介面其提供了3中呼叫方式,分別是 "Xxxx 、 Xxxxln 、Xxxxf",基本和fmt中的相關函式類似;單功能有限,很難比如按天,按照容量自動輸出拆封生成新日誌。如果自己開發一套日子,基本上要滿足日誌等級輸出如DEBUG,INFO,WARN,ERROR/FATAL 、支援輸出 console 和滾動式檔案、引數格式化輸出、自定義格式化模板,當然如果支援更高級別如按照pakcage輸出到不同檔案,按照日誌級別輸出到不同地方那就更帥氣了。 

      下面羅列覺得可能後期會用開源專案

開源日誌對比
project stars forks description
8607 1071 Logrus is a structured logger for Go (golang), completely API compatible with the standard library logger.
zap 5292 361 Blazing fast, structured, leveled logging in Go.
1414 85

The zerolog package provides a fast and simple logger dedicated to JSON output.

220 32 BLog4go is an efficient logging library written in the Go programming language, providing logging hook, log rotate, filtering and formatting log message.
1193 201 Seelog is a native Go logging library that provides flexible asynchronous dispatching, filtering, and formatting.

 logrus是已知的Go語言日誌庫中在github中stars數最多的日誌庫,功能強大,效能也不錯。另外值得一提的是logrus的一個fork庫

gogap/logrus,可以配置輸出到檔案和graylog日誌系統,基礎的level、呼叫鏈、行號,檔案切分都有,特色是結構化日誌可以被統計和索引,藉助graylog就可以做日誌分析,不過這個庫很久沒有維護了。

zap是Go中一個快速,結構化,分級日誌庫,Uber出品。能夠啟用強大的ad-hoc分析, 靈活的儀表板, 其功能超過其他工具ELK, Splunk, 和 Sentry. 所有日誌訊息都是JSON-serialized。具體參考 Go高效能日誌庫zap詳細分析

zerolog也是一款效能相當好的日誌庫,有趣的是zerologzap都在自家的Github庫首頁中的效能對比資料裡打敗了對方,zerolog 是受到uber 的日誌庫zap 的啟發,golang社群裡,對高效能日誌庫的追求,引發了編譯器團隊對一些使用模式的優化。

blog4go是高效能日誌庫。創新地使用“邊解析邊輸出”方法進行日誌輸出,同時支援回撥函式、日誌淘汰和配置檔案。可以解決高併發,呼叫日誌函式頻繁的情境下,日誌庫造成的效能問題。

   最後 提供兩個  benchmark庫,提供的部分Go日誌庫的效能對比資料,供技術選型時參考