Closed cojoj closed 8 months ago
Hi, this is very much on our radar. We don't have an exact timeline for this, but we are planning an integration for slog, as well as some improvements to the logs in context features supported by the go agent. We will update you when we have more specifics.
Any updates on this?
Correct me if I'm wrong, but I believe this may be implemented now using the v3 logWriter, eg
package main
import (
"github.com/newrelic/go-agent/v3/integrations/logcontext-v2/logWriter"
"github.com/newrelic/go-agent/v3/newrelic"
"log/slog"
"os"
)
func main() {
app, _ := newrelic.NewApplication(
newrelic.ConfigAppName("example"),
newrelic.ConfigLicense(os.Getenv("NEW_RELIC_LICENSE")),
newrelic.ConfigAppLogForwardingEnabled(true),
)
writer := logWriter.New(os.Stdout, app)
options := &slog.HandlerOptions{Level: slog.LevelInfo}
handler := slog.NewJSONHandler(writer, options)
slog.SetDefault(slog.New(handler))
}
@Jared-Prime Thanks for the code. It seems to have worked flawlessly.
Correct me if I'm wrong, but I believe this may be implemented now using the v3 logWriter, eg
package main import ( "github.com/newrelic/go-agent/v3/integrations/logcontext-v2/logWriter" "github.com/newrelic/go-agent/v3/newrelic" "log/slog" "os" ) func main() { app, _ := newrelic.NewApplication( newrelic.ConfigAppName("example"), newrelic.ConfigLicense(os.Getenv("NEW_RELIC_LICENSE")), newrelic.ConfigAppLogForwardingEnabled(true), ) writer := logWriter.New(os.Stdout, app) options := &slog.HandlerOptions{Level: slog.LevelInfo} handler := slog.NewJSONHandler(writer, options) slog.SetDefault(slog.New(handler)) }
The log writer product is very flexible, and is technically compatible with anything that can write to an io.Writer
interface. We have not internally tested this with slog, but I cant see why this would be any different than other tools that use io.Writer
. This should work for log decoration, but not auto-instrumentation.
Thank you all for your patience, I am very excited to ask you all to take a look at, and give a test drive to what is soon to become nrslog! #847
We are planning a release next week, probably on Wednesday, but will be accepting community feedback until then. Please leave comments on the linked pull request!
Summary
With Go
1.21
, we've seen the introduction ofslog
. It'd be very beneficial for many developers to have the possibility to utilize this new built-in structured logging and have this data in New Relic and drop 4rd party dependencies.