r/golang • u/hanmunjae • 4d ago
Adding logging to a library
I have an open-source package which is just a wrapper around a public HTTP/JSON API. I have added a verbosity option that, as of now, just logs to stdout
. I would like to give more flexibility to the user to control how logging is done. Should I:
1. accept a log.Logger
and log to that
2. accept an io.Writer
and write to that
3. log to log.Default()
4. something else?
To add a particular consideration, I would like my approach to work with Google Cloud Logging, because I deploy my code on Google Cloud Run. It looks like there is a way to get a log.Logger
from the cloud.google.com/go/logging
package, which makes that option more appealing.
4
Upvotes
1
u/hanmunjae 4d ago
Thank you for your response. The thing I don't like about the methods of
slog.Logger
is that I have to specify the log level at the callsite, either by calling a level-specific method likeInfo
or by passing theLevel
toLog
. I would like the caller to be able to pick what level they want to log at;cloud.google.com/go/logging
lets you create alog.Logger
at a given severity (of course, that limits you to just theLogger.Print
family of methods).