如何获取原始参数
zuozhehao opened this issue · 6 comments
zuozhehao commented
slog.PushHandlers(handler...)
func (n *notify) Handle(record *slog.Record) error {
return nil
}
在record 如何获取slog.Error
传入的args
inhere commented
handler 这里拿不到了, args 已经被格式化到 record.Message 了
inhere commented
这种情况应该设置 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
}
zuozhehao commented
这种情况应该设置 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拿到参数断言判断下就可以做很多事情。
inhere commented
记录下 args 也可以,我下个版本在 record 加个 Fmt, Args
备份。