日志接口

概述

LoggerVine 的日志模块,我们抽象一个一组通用的接口,用户可以根据自己的需要来构建自己的实现:

type Logger interface {
	// Init initialises options
	Init(options ...Option) error
	// Options the Logger options
	Options() Options
	// Fields set fields to always be logged
	Fields(fields map[string]interface{}) Logger
	// Log writes a log entry
	Log(level Level, v ...interface{})
	// Logf writes a formatted log entry
	Logf(level Level, format string, v ...interface{})
	// String returns the name of logger
	String() string
}

使用

这里介绍 Logger 的简单使用方式,我们在内部已经有自带的实现:

func main() {
    // 新 Logger
    l := logger.NewLogger(WithLevel(TraceLevel))
	h1 := logger.NewHelper(l).WithFields(map[string]interface{}{"key1": "val1"})
	h1.Trace("trace_msg1")
	h1.Log(WarnLevel, "warn_msg1")

	h2 := logger.NewHelper(l).WithFields(map[string]interface{}{"key2": "val2"})
	h2.Trace("trace_msg2")
	h2.Warn("warn_msg2")

    // 设置 Fields
	l.Fields(map[string]interface{}{"key3": "val4"}).Log(InfoLevel, "test_msg")

    // 使用默认的 logger
	logger.Fields(map[string]interface{}{"key1": "val1"})
	logger.Info("info")
}

查看输出:

2021-09-05 16:29:32 file=logger/logger_test.go:10 key1=val1 level=trace trace_msg1
2021-09-05 16:29:32 file=logger/logger_test.go:11 key1=val1 level=warn warn_msg1
2021-09-05 16:29:32 file=logger/logger_test.go:14 key2=val2 level=trace trace_msg2
2021-09-05 16:29:32 file=logger/logger_test.go:15 key2=val2 level=warn warn_msg2
2021-09-05 16:29:32 file=logger/logger_test.go:17 key3=val4 level=info test_msg
2021-09-05 16:29:32 file=logger/logger_test.go:20 key1=val1 level=info info

默认的实现支持以下几种级别日志:

  • TRACE: 日志追踪
  • DEBUG: 调试日志
  • INFO: 普通提示
  • WARN: 警告,有错误但不影响正常运行
  • ERROR: 错误,功能无法正常执行
  • FATAL: 严重错误,触发会导致程序崩溃

最后修改 September 5, 2021: logger (c05d86b)