Go語言是谷歌2009發布的第二款開源編程語言。Go語言專門針對多處理器系統應用程序的編程進行了優化,使用Go編譯的程序可以媲美C或C++代碼的速度,而且更加安全、支持并行進程。

目前創新互聯公司已為數千家的企業提供了網站建設、域名、網站空間、綿陽服務器托管、企業網站設計、寧化網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。
golang的原生日志模塊不能滿足需求,而開源的第三方包,也不完全夠用。用戶較多的logrus,卻沒有rotate功能,這已經是眾所周知的。對于運維來說,當然是希望日志的處理中比較簡單、實用、夠用。不需要額外的通過系統來實現logrotate。
1、需求
從需求方面來說,主要有幾個方面:
一方面肯定是需要有輪轉功能,而且要限制保留的日志份數。至于是按文件大小,還是按天、按小時切割,則可以討論。
另一方面,對于日志的級別,如果能夠動態調整,則方便日志關閉常規日志,在線調試時,動態降低日志的等級,打印更多debug日志。
2、調研
目前主要的有幾個:
github.com/sirupsen/logrus。用戶廣泛,但明確表示不支持日志切割功能,建議通過hook走日志系統。 github.com/natefinch/lumberjack。支持以文件大小的方式切割日志。用戶偏少。 gopkg.in/inconshreveable/log15.v2。比較老牌。 github.com/lestrrat-go/file-rotatelogs。基于小時數進行切割的小眾包。 github.com/xiaomi-tc/log15。小米基于log15寫的二次封裝增加了切割功能。但只有2星。
有前同事基于log15寫的二次封裝,但log15.v2/ext的包不太容易理解。
github.com/ngaut/log。完全不依賴第三方包??苫谌掌诩靶r進行切割。
綜上,ngaut比較適合學習和了解封裝過程。而基于logrus則是比較靠譜的選擇,底層需要其他包實現的切割功能。
3、功能設計
主要點:
由logrus來完成日志功能。
需要完成日志切割,歷史日志需要壓縮
支持參考Go代碼遇到的問題提供的level熱更新
以上就是golang log如何設計的詳細內容,更多請關注創新互聯其它相關文章!
                網站欄目:如何設計go語言中的log
                
                文章位置:http://www.yijiale78.com/article40/jdogho.html
            
成都網站建設公司_創新互聯,為您提供外貿網站建設、網站營銷、網站設計、標簽優化、網站維護、建站公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯
