Closed Kinmfer closed 1 year ago
logger使用时,跟输出模式无关,添加不同handler就输出不同地方。
logger.WithField()
始终是可用的。
logger使用时,跟输出模式无关,添加不同handler就输出不同地方。
logger.WithField()
始终是可用的。 不过我这样使用了之后确实没有输出field,是我哪里使用方式有问题嘛
TIP: 字段是每条日志固定输出的,如果只是想追加一些临时数据,可以用 WithData()
默认模板:
DefaultTemplate = "[{{datetime}}] [{{channel}}] [{{level}}] [{{caller}}] {{message}} {{data}} {{extra}}\n"
新增字段需要改输出模板:
// new field: key => {{key}}
myTemplate := "[{{datetime}}] [{{level}}] {{key}} {{message}} {{data}} {{extra}}\n"
slog.GetFormatter().(*log.TextFormatter).SetTemplate(myTemplate)
TIP: 字段是每条日志固定输出的,如果只是想追加一些临时数据,可以用
WithData()
默认模板:
DefaultTemplate = "[{{datetime}}] [{{channel}}] [{{level}}] [{{caller}}] {{message}} {{data}} {{extra}}\n"
新增字段需要改输出模板:
// new field: key => {{key}} myTemplate := "[{{datetime}}] [{{level}}] {{key}} {{message}} {{data}} {{extra}}\n" slog.GetFormatter().(*log.TextFormatter).SetTemplate(myTemplate)
好的 withdata是可以的,不过文档里可能需要修改下 1.slog.NewWithHandlers()需要改成slog.NewWithHandlers(h) 2.handler没有GetFormatter方法,slog是有的
😂 感谢指正,文档上写错误了,应该是 h.Formatter()
。
文档上有很多功能点可能没写全,可以跳转进去看源码或者test😂
handler 一般都包装了 Formattable interface
:
// Formattable interface
type Formattable interface {
// Formatter get the log formatter
Formatter() Formatter
// SetFormatter set the log formatter
SetFormatter(Formatter)
}
好嘞好嘞,感谢大佬,很喜欢这个日志库,不仅简洁而且高效
例如zap有zap.String(),zap.Any()等等,在打印一些附带信息的时候会更方便点