Closed zuozhehao closed 1 year ago
handler 这里拿不到了, args 已经被格式化到 record.Message 了
handler 这里拿不到了, args 已经被格式化到 record.Message 了
是否有别的方法可以拿到,便于判断是否需要做通知 @inhere
这种情况应该设置 context data 或者 extra 数据, 使用更方便:
// add log
slog.WithData(slog.M{"notify": true}).Info("some message")
// in handler
func (n *notify) Handle(record *slog.Record) error {
notify := record.Data["notify"]
if notify {
// do something ...
}
return nil
}
这种情况应该设置 context data 或者 extra 数据, 使用更方便:
// add log slog.WithData(slog.M{"notify": true}).Info("some message") // in handler func (n *notify) Handle(record *slog.Record) error { notify := record.Data["notify"] if notify { // do something ... } return nil }
@inhere 1、那这样就需要在所有地方都加上
.WithData(slog.M{"notify": true})
, 2、对于那些返回自定义error
的有附加数据得map[string]any
,那我还需要把map[string]any
转成slog.M
需要做以上两个处理才可以。
如果能在record 拿到args,那改动就很小,slog.Error(err)
只需在record拿到参数断言判断下就可以做很多事情。
记录下 args 也可以,我下个版本在 record 加个 Fmt, Args
备份。
slog.PushHandlers(handler...)
在record 如何获取
slog.Error
传入的args