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