创新互联GoFrame教程:GoFrame日志组件-日志级别

日志级别

日志级别用于管理日志的输出,我们可以通过设定特定的日志级别来关闭/开启特定的日志内容。 日志级别的设置可以通过两个方法实现:

创新互联公司从2013年开始,是专业互联网技术服务公司,拥有项目网站制作、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元积石山保安族东乡族做网站,已为上家服务,为积石山保安族东乡族各地企业和个人服务,联系电话:18982081108

func (l *Logger) SetLevel(level int)
func (l *Logger) SetLevelStr(levelStr string) error

SetLevel方法

通过​SetLevel​方法可以设置日志级别,​glog​模块支持以下几种日志级别常量设定:

LEVEL_ALL
LEVEL_DEV
LEVEL_PROD
LEVEL_DEBU
LEVEL_INFO
LEVEL_NOTI
LEVEL_WARN
LEVEL_ERRO

我们可以通过位操作组合使用这几种级别,例如其中​LEVEL_ALL​等价于​LEVEL_DEBU​ | ​LEVEL_INFO| ​LEVEL_NOTI| ​LEVEL_WARN| ​LEVEL_ERRO| ​LEVEL_CRIT。我们还可以通过​LEVEL_ALL& ^​LEVEL_DEBU& ^​LEVEL_INFO& ^​LEVEL_NOTI来过滤掉​LEVEL_DEBU​/​LEVEL_INFO​/​LEVEL_NOTI​日志内容。

当然​glog​模块还有其他的一些级别,如​CRIT​和​FATA​,但是这两个级别是非常严重的错误,无法由开发者自定义屏蔽,产生严重错误的时候。将会产生一些额外的系统动作,如​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")
}

执行后,输出结果为:

2021-12-31 11:16:57.272 [INFO] info1

SetLevelStr方法

大部分场景下我们可以通过​SetLevelStr​方法来通过字符串设置日志级别,配置文件中的​level​配置项也是通过字符串来配置日志级别。支持的日志级别字符串如下,不区分大小写:

"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,

可以看到,通过级别名称设置的日志级别是按照日志级别的高低来进行过滤的:​DEBU< ​INFO< ​NOTI< ​WARN< ​ERRO< ​CRIT,也支持​ALL​, ​DEV​, ​PROD​常见部署模式配置名称。

使用示例:

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")
}

执行后,输出结果为:

2021-12-31 11:20:15.019 [INFO] info1 

级别名称

在日志中我们会看到不同级别的打印内容,会在内容前面带有不同的日志级别名称。默认的日志级别名称如下:

LEVEL_DEBU: "DEBU",
LEVEL_INFO: "INFO",
LEVEL_NOTI: "NOTI",
LEVEL_WARN: "WARN",
LEVEL_ERRO: "ERRO",
LEVEL_CRIT: "CRIT",
LEVEL_PANI: "PANI",
LEVEL_FATA: "FATA",

为方便统一日志格式,保证比较优雅的排版风格,因此日志级别的名称都使用了级别英文单词的前四个字符。若有特殊需求需要修改日志级别名称的,可以通过以下方法进行设置:

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")
}

执行后,终端输出:

2021-12-31 11:21:45.754 [debug] test 

文章名称:创新互联GoFrame教程:GoFrame日志组件-日志级别
标题来源:http://www.shufengxianlan.com/qtweb/news5/189305.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联