W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
日志級(jí)別用于管理日志的輸出,我們可以通過(guò)設(shè)定特定的日志級(jí)別來(lái)關(guān)閉/開(kāi)啟特定的日志內(nèi)容。 日志級(jí)別的設(shè)置可以通過(guò)兩個(gè)方法實(shí)現(xiàn):
func (l *Logger) SetLevel(level int)
func (l *Logger) SetLevelStr(levelStr string) error
通過(guò)?SetLevel
?方法可以設(shè)置日志級(jí)別,?glog
?模塊支持以下幾種日志級(jí)別常量設(shè)定:
LEVEL_ALL
LEVEL_DEV
LEVEL_PROD
LEVEL_DEBU
LEVEL_INFO
LEVEL_NOTI
LEVEL_WARN
LEVEL_ERRO
我們可以通過(guò)位操作組合使用這幾種級(jí)別,例如其中?LEVEL_ALL
?等價(jià)于?LEVEL_DEBU
? | ?LEVEL_INFO
| ?LEVEL_NOTI
| ?LEVEL_WARN
| ?LEVEL_ERRO
| ?LEVEL_CRIT
。我們還可以通過(guò)?LEVEL_ALL
& ^?LEVEL_DEBU
& ^?LEVEL_INFO
& ^?LEVEL_NOTI
來(lái)過(guò)濾掉?LEVEL_DEBU
?/?LEVEL_INFO
?/?LEVEL_NOTI
?日志內(nèi)容。
當(dāng)然?glog
?模塊還有其他的一些級(jí)別,如?CRIT
?和?FATA
?,但是這兩個(gè)級(jí)別是非常嚴(yán)重的錯(cuò)誤,無(wú)法由開(kāi)發(fā)者自定義屏蔽,產(chǎn)生嚴(yán)重錯(cuò)誤的時(shí)候。將會(huì)產(chǎn)生一些額外的系統(tǒng)動(dòng)作,如?panic
?/?exit
?。
使用示例:
package main
import (
"context"
"github.com/gogf/gf/v2/os/glog"
)
func main() {
ctx := context.TODO()
l := glog.New()
l.Info(ctx, "info1")
l.SetLevel(glog.LEVEL_ALL ^ glog.LEVEL_INFO)
l.Info(ctx, "info2")
}
執(zhí)行后,輸出結(jié)果為:
2021-12-31 11:16:57.272 [INFO] info1
大部分場(chǎng)景下我們可以通過(guò)?SetLevelStr
?方法來(lái)通過(guò)字符串設(shè)置日志級(jí)別,配置文件中的?level
?配置項(xiàng)也是通過(guò)字符串來(lái)配置日志級(jí)別。支持的日志級(jí)別字符串如下,不區(qū)分大小寫(xiě):
"ALL": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
"DEV": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
"DEVELOP": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
"PROD": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
"PRODUCT": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
"DEBU": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
"DEBUG": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
"INFO": LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
"NOTI": LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
"NOTICE": LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
"WARN": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
"WARNING": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
"ERRO": LEVEL_ERRO | LEVEL_CRIT,
"ERROR": LEVEL_ERRO | LEVEL_CRIT,
"CRIT": LEVEL_CRIT,
"CRITICAL": LEVEL_CRIT,
可以看到,通過(guò)級(jí)別名稱(chēng)設(shè)置的日志級(jí)別是按照日志級(jí)別的高低來(lái)進(jìn)行過(guò)濾的:?DEBU
< ?INFO
< ?NOTI
< ?WARN
< ?ERRO
< ?CRIT
,也支持?ALL
?, ?DEV
?, ?PROD
?常見(jiàn)部署模式配置名稱(chēng)。
使用示例:
package main
import (
"context"
"github.com/gogf/gf/v2/os/glog"
)
func main() {
ctx := context.TODO()
l := glog.New()
l.Info(ctx, "info1")
l.SetLevelStr("notice")
l.Info(ctx, "info2")
}
執(zhí)行后,輸出結(jié)果為:
2021-12-31 11:20:15.019 [INFO] info1
在日志中我們會(huì)看到不同級(jí)別的打印內(nèi)容,會(huì)在內(nèi)容前面帶有不同的日志級(jí)別名稱(chēng)。默認(rèn)的日志級(jí)別名稱(chēng)如下:
LEVEL_DEBU: "DEBU",
LEVEL_INFO: "INFO",
LEVEL_NOTI: "NOTI",
LEVEL_WARN: "WARN",
LEVEL_ERRO: "ERRO",
LEVEL_CRIT: "CRIT",
LEVEL_PANI: "PANI",
LEVEL_FATA: "FATA",
為方便統(tǒng)一日志格式,保證比較優(yōu)雅的排版風(fēng)格,因此日志級(jí)別的名稱(chēng)都使用了級(jí)別英文單詞的前四個(gè)字符。若有特殊需求需要修改日志級(jí)別名稱(chēng)的,可以通過(guò)以下方法進(jìn)行設(shè)置:
func (l *Logger) SetLevelPrefix(level int, prefix string)
func (l *Logger) SetLevelPrefixes(prefixes map[int]string)
使用示例:
package main
import (
"context"
"github.com/gogf/gf/v2/os/glog"
)
func main() {
ctx := context.TODO()
l := glog.New()
l.SetLevelPrefix(glog.LEVEL_DEBU, "debug")
l.Debug(ctx, "test")
}
執(zhí)行后,終端輸出:
2021-12-31 11:21:45.754 [debug] test
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)系方式:
更多建議: