RocketMQ客户端修改默认日志配置【golang版】

前置说明

go默认使用logrus,但是提供了接口,可以自定义日志实现,官网说明如下:

Set Logger

Go Client define the Logger interface for log output, user can specify implementation of private. in default, client use logrus.

rlog.SetLogger(Logger)

适用场景

自定义日志格式、日志输出目录(采集、监控、统计分析等场景下使用)

示例

自定义日志实现

type myLogger struct {
	flag string
}

func (l *myLogger) Info(msg string, fields map[string]interface{}) {
	if msg == "" && len(fields) == 0 {
		return
	}
	log.Println(l.flag, "[info]", msg)
}

func (l *myLogger) Warning(msg string, fields map[string]interface{}) {
	if msg == "" && len(fields) == 0 {
		return
	}
	log.Println(l.flag, "[warn]", msg)
}

func (l *myLogger) Error(msg string, fields map[string]interface{}) {
	if msg == "" && len(fields) == 0 {
		return
	}
	log.Println(l.flag, "[error]", msg)
}

func (l *myLogger) Fatal(msg string, fields map[string]interface{}) {
	if msg == "" && len(fields) == 0 {
		return
	}
	log.Fatal(l.flag, "[fatal]", msg)
}

启动的时候设置日志实现

func main() {
	// 设置日志,默认使用logrus
	rlog.SetLogger(&myLogger{flag: "xuxd"})
    // 其它逻辑
    ...
}

运行结果如下:

设置日志级别

go client 默认打印info级别日志,我上图打印的有debug,是因为我设置日志级别为debug,只用设置环境变量:ROCKETMQ_GO_LOG_LEVEL=debug

我用的goland,示例如下:

日志源码文件

源码文件名:log.go

type Logger interface {
	Debug(msg string, fields map[string]interface{})
	Info(msg string, fields map[string]interface{})
	Warning(msg string, fields map[string]interface{})
	Error(msg string, fields map[string]interface{})
	Fatal(msg string, fields map[string]interface{})
}

func init() {
	r := &defaultLogger{
		logger: logrus.New(),
	}
	level := os.Getenv("ROCKETMQ_GO_LOG_LEVEL")
	switch strings.ToLower(level) {
	case "debug":
		r.logger.SetLevel(logrus.DebugLevel)
	case "warn":
		r.logger.SetLevel(logrus.WarnLevel)
	case "error":
		r.logger.SetLevel(logrus.ErrorLevel)
	default:
		r.logger.SetLevel(logrus.InfoLevel)
	}
	rLog = r
}

猜你喜欢

转载自blog.csdn.net/x763795151/article/details/114704947
今日推荐