GoFrame 日志組件-日志級(jí)別

2022-03-29 15:24 更新

日志級(jí)別

日志級(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

SetLevel方法

通過(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

SetLevelStr方法

大部分場(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 

級(jí)別名稱(chēng)

在日志中我們會(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 


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)