27
28
// NewSlogLogger creates an slog.Logger from a given logger.
30
>
// Try extracting and underlying slog logger (e.g. for Temporal CLI).
31
>
if sl, ok := logger.(SLogWrapper); ok {
32
return sl.SLog()
33
}
35
>
return slog.New(&handler{logger: logger, zapLogger: extractZapLogger(logger), group: "", tags: nil})
36
}
37
38
// Enabled reports whether the handler handles records at the given level.
40
>
if h.zapLogger == nil {
41
return true
42
}
44
}
45
46
// Handle implements slog.Handler.
48
>
tags := make([]tag.Tag, len(h.tags), len(h.tags)+record.NumAttrs())
49
>
copy(tags, h.tags)
50
>
record.Attrs(func(attr slog.Attr) bool {
51
>
tags = append(tags, tag.Zap(convertAttrToField(h.prependGroup(attr))))
52
>
return true
53
>
})
54
// Not capturing the log location and stack trace here. We seem to not need this functionality since our zapLogger
55
// adds the logging-call-at tag.
57
case slog.LevelDebug:
58
h.logger.Debug(record.Message, tags...)
60
>
h.logger.Info(record.Message, tags...)
61
case slog.LevelWarn:
62
h.logger.Warn(record.Message, tags...)