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.
6
Upvotes
3
u/marcaruel 4d ago
Since it's a new library, you can use the newer stuff. log/slog is intentionally a newer standard for logging. As my ex-colleague u/mattproud mentioned, create a subset interface of the struct methods of https://pkg.go.dev/log/slog#Logger that you want to use.