Install Golang package
go get github.com/middleware-labs/golang-apm@latest
Import Tracker
Add this import statement in your project.
import (
track "github.com/middleware-labs/golang-apm/tracker"
)
Add this snippet in your main function
go track.Track(
track.WithConfigTag(track.Service, "your-service-name"),
track.WithConfigTag(track.Token, "your API token"),
)
Import Application logs
Open-telemetry Loggers
log/slog
config, _ := track.Track(
track.WithConfigTag(track.Service, "your service name"),
track.WithConfigTag(track.Token, "your API token"),
)
logger := mwotelslog.NewMWOTelLogger(
config,
mwotelslog.WithDefaultConsoleLog(), // to enable console log
mwotelslog.WithName("otelslog"),
)
//configure default logger
slog.SetDefault(logger)
Add NewMWOtelHandler with config from tracker config.
This will start collecting the application log from slog and standard library logs.
See mwotelslog features sample for more details.
zap
config, _ := track.Track(
track.WithConfigTag(track.Service, "your service name"),
track.WithConfigTag(track.Token, "your token"),
)
logger := zap.New(zapcore.NewTee(consoleCore, fileCore, mwotelzap.NewMWOTelCore(config, mwotelzap.WithName("otelzaplog"))))
zap.ReplaceGlobals(logger)
Add NewMWOTelCore with config from tracker config.
This will start collecting the application log from zap.
See mwotelzap features sample for more details.
zerolog
config, _ := track.Track(
track.WithConfigTag(track.Service, "your service name"),
track.WithConfigTag(track.Token, "your API token"),
= )
hook := mwotelzerolog.NewMWOTelHook(config)
logger := log.Hook(hook)
Add NewMWOTelHook with config from tracker config.
This will start collecting the application log from zerolog.
See mwotelzerolog features sample for more details.
logrus
config, _ := track.Track(
track.WithConfigTag(track.Service, "your service name"),
track.WithConfigTag(track.Token, "your API token"),
)
logHook := otellog.NewMWOTelHook(config, otellog.WithLevels(log.AllLevels), otellog.WithName("otellogrus"))
// add hook in logrus
log.AddHook(logHook)
// set formatter if required
log.SetFormatter(&log.JSONFormatter{})
Add NewMWOTelHook with config from tracker config.
This will start collecting the application log from logrus.
See mwotellogrus features sample for more details.
Collect Application Profiling Data
If you also want to collect profiling data for your application,
simply add this one config to your track.Track() call
track.WithConfigTag(track.Token, "{ACCOUNT_KEY}"),
Stack Error
If you want to record exception in traces then you can use track.ErrorRecording(ctx,error) method.
err := errors.New("something went wrong")
track.ErrorRecording(ctx, err)
Pause Default Metrics
go track.Track(
track.WithConfigTag(track.PauseDefaultMetrics,true),
)
Enable Debug Mode with console log
go track.Track(
track.WithConfigTag(track.Debug, true),
)
Enable Debug Mode with logs files for Metrics, Traces and Logs
go track.Track(
track.WithConfigTag(track.Debug, true),
track.WithConfigTag(track.DebugLogFile, true),
)