W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
滾動(dòng)切分目前屬于實(shí)驗(yàn)性特性,如有問(wèn)題請(qǐng)隨時(shí)反饋。
之前的章節(jié)中我們知道,?glog
?組件支持通過(guò)設(shè)置日志文件名稱的方式,使得日志文件按照日期進(jìn)行輸出。從?GF v1.12
?版本開(kāi)始,?glog
?組件也支持對(duì)日志文件進(jìn)行滾動(dòng)切分的特性,該特性涉及到日志對(duì)象配置屬性中的以下幾個(gè)配置項(xiàng):
RotateSize int64 // Rotate the logging file if its size > 0 in bytes.
RotateExpire time.Duration // Rotate the logging file if its mtime exceeds this duration.
RotateBackupLimit int // Max backup for rotated files, default is 0, means no backups.
RotateBackupExpire time.Duration // Max expire for rotated files, which is 0 in default, means no expiration.
RotateBackupCompress int // Compress level for rotated files using gzip algorithm. It's 0 in default, means no compression.
RotateCheckInterval time.Duration // Asynchronizely checks the backups and expiration at intervals. It's 1 hour in default.
簡(jiǎn)要說(shuō)明:
RotateSize
?用于設(shè)置滾動(dòng)切分時(shí)按照文件大小進(jìn)行切分,該屬性的單位為字節(jié)。只有當(dāng)該屬性值大于0時(shí)才會(huì)開(kāi)啟滾動(dòng)切分的特性。
RotateExpire
?用于設(shè)置滾動(dòng)切分時(shí)按照文件超過(guò)一定時(shí)間沒(méi)有修改時(shí)進(jìn)行切分。只有當(dāng)該屬性值大于0時(shí)才會(huì)開(kāi)啟滾動(dòng)切分的特性。
RotateBackupLimit
?用于設(shè)置滾動(dòng)切分的保留文件數(shù),默認(rèn)為0表示不保留,往往該值需要設(shè)置大于0。超過(guò)該保留文件數(shù)的切分文件將會(huì)按照從舊到新進(jìn)行刪除。
RotateBackupExpire
?用于設(shè)置按照過(guò)期時(shí)間進(jìn)行清理。當(dāng)切分文件超過(guò)指定的時(shí)間時(shí)將會(huì)被刪除。
RotateBackupCompress
?用于設(shè)置切分文件的壓縮級(jí)別,默認(rèn)為0表示不壓縮。該壓縮級(jí)別的取值范圍為1-9,其中9為最大壓縮級(jí)別。
RotateCheckInterval
?用于設(shè)置定時(shí)器的定時(shí)檢測(cè)間隔,默認(rèn)為1小時(shí),往往不需要設(shè)置。從以上滾動(dòng)切分的配置項(xiàng)可以看到,僅有當(dāng)?RotateSize
?或者?RotateExpire
?配置項(xiàng)被設(shè)置時(shí)才會(huì)生效,默認(rèn)情況下是關(guān)閉的。
?glog
?組件的日志輸出文件固定格式為?*.log
?,即使用?.log
?作為日志文件名后綴。為方便統(tǒng)一規(guī)范管理,切分文件的格式也是固定的,開(kāi)發(fā)者無(wú)法自定義。當(dāng)日志文件被滾動(dòng)切分時(shí),當(dāng)前被切分的日志文件將會(huì)按照”?*.切分時(shí)間.log
?“的格式進(jìn)行重命名。其中切分時(shí)間的格式為:年月日時(shí)分秒毫秒微秒,例如:
access.log -> access.20200326101301899002.log
access.20200326.log -> access.20200326.20200326101301899002.log
logger:
Path: "/var/log"
Level: "all"
Stdout: false
RotateSize: "100M"
RotateBackupLimit: 2
RotateBackupExpire: "7d"
RotateBackupCompress: 9
簡(jiǎn)要說(shuō)明:
RotateSize
?配置項(xiàng)在配置文件中支持使用字符串的形式進(jìn)行設(shè)置,例如:100M, 200MB, 500KB, 1Gib等等,在該示例中,我們?cè)O(shè)置日志文件大小超過(guò)100M時(shí)進(jìn)行切分。
RotateBackupExpire
?的配置項(xiàng)也支持字符串配置,例如:1h, 30m, 1d6h, 7d等等,在該示例中,我們?cè)O(shè)置切分文件的過(guò)期時(shí)間為7d,即七天后會(huì)自動(dòng)刪除該切分文件。
RotateBackupCompress
?為9表示使用最大的壓縮級(jí)別,使得切分后的文件最小化存儲(chǔ)。但是需要注意,切分和壓縮是兩個(gè)不同的操作,文件壓縮是一個(gè)異步操作,因此當(dāng)文件被自動(dòng)切分后,定時(shí)器通過(guò)一定的時(shí)間間隔定期檢查后再自動(dòng)將其壓縮為*.gz文件。壓縮級(jí)別設(shè)置得越高,會(huì)更多使用CPU資源。logger:
Path: "/var/log"
Level: "all"
Stdout: false
RotateExpire: "1d"
RotateBackupLimit: 1
RotateBackupExpire: "7d"
RotateBackupCompress: 9
在這里,我們?cè)O(shè)置?RotateExpire
?為1d表示當(dāng)某個(gè)日志文件超過(guò)一天都沒(méi)有任何修改/寫(xiě)入時(shí),?glog
?模塊將會(huì)自動(dòng)將其進(jìn)行滾動(dòng)切分。同時(shí)進(jìn)行壓縮存儲(chǔ)。
由于不同的日志對(duì)象可能有不同的滾動(dòng)切分配置,假如多個(gè)日志對(duì)象的日志目錄為同一個(gè),并且都開(kāi)啟了滾動(dòng)切分特性,那么多個(gè)日志對(duì)象的滾動(dòng)切分配置項(xiàng)會(huì)沖突,會(huì)有意想不到的結(jié)果。因此,我們建議您兩個(gè)選擇:
g.Log()
?),通過(guò)?Cat
?或?File
?方法設(shè)置輸出日志文件到不同的目錄或文件名。
Path
?配置項(xiàng))設(shè)置為不同的文件目錄,并且多個(gè)日志對(duì)象的日志目錄不存在相互的層級(jí)關(guān)系。例如: 我們有兩類業(yè)務(wù)日志文件?order
?和?promo
?,分別對(duì)應(yīng)訂單業(yè)務(wù)和促銷業(yè)務(wù),我們先假定他們屬于同一個(gè)服務(wù)程序中。
假如日志路徑為?/var/log
?,我們可以:
g.Log().Cat("order").Print(xxx)
?輸出訂單日志。生成的日志文件例如:?/var/log/order/2020-03-26.log
?。
g.Log().Cat("promo").Print(xxx)
?輸出促銷日志。生成的日志文件例如:?/var/log/promo/2020-03-26.log
?。也可以通過(guò):
g.Log().File("order").Print(xxx)
?輸出訂單日志。生成的日志文件例如:?/var/log/order.log
?。
g.Log().File("order").Print(xxx)
?輸出促銷日志。生成的日志文件例如:?/var/log/promo.log
?。Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: