The documentation of the package says this: "Package slog provides 
structured logging, in which log records include a message, a severity 
level, and various other attributes expressed as key-value pairs."


If you are using string formatting you are not producing key-value pairs. 
Following the structured logging philosophy your example should be 
slog.Error("func returned error", "err", err). I would include a second 
key-value pair "func", "<functionName>" too. 


Such key value pairs are much easier to filter by log management and 
processing tools than formatted strings. It also helps to reduce the CPU 
consumption of the logging function itself. The slog package provides the 
LogAttrs function for that purpose.
On Wednesday, December 13, 2023 at 3:30:53 AM UTC+1 Billy Lynch wrote:

> Hi!
>
> I've been playing around with the new slog package, and I noticed that it 
> was missing formatter funcs (Infof, Errorf, etc). I'm interested in adding 
> these, but I wasn't sure if this was done intentionally since the godoc calls 
> out this type of functionality in examples 
> <https://pkg.go.dev/log/slog#hdr-Wrapping_output_methods>. 
>
> Helpers have been suggested as a workaround for this 
> <https://github.com/golang/go/issues/59145#issuecomment-1481920720>, but 
> this is common enough behavior for me that I think it'd be very helpful to 
> have upstream to make it easy to do things like: slog.Errorf("error calling 
> func: %v", err)
>
> Rough idea would be do expose formatter functions in the Logger 
> <https://pkg.go.dev/log/slog#Logger>, with the tradeoff that you replace 
> formatter args for Attr args:
>
> ```go
> func (l *Logger) Errorf(format string, args ...any) {
> l.log(context.Background(), LevelError, fmt.Sprintf(msg, args...))
> }
>
> func (l *Logger) ErrorContextf(ctx context.Background(ctx context.Context, 
> format string, args ...any) {
> l.log(ctx, LevelError, fmt.Sprintf(msg, args...))
> }
> ```
>
> I wanted to check in before I opened an issue! 🙏
> Let me know if this makes sense, or if there's context I'm missing.
>
> Thanks!
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/434b20b9-a007-40be-b6a9-9508ae4122dan%40googlegroups.com.

Reply via email to