Collect logs from your Go application.
Add slog-betterstack to your project dependencies using go get.
go get github.com/samber/slog-betterstack
Configure slog-betterstack as a handler in a new slog logger.
Your log events will be sent to Better Stack automatically.
import (
slogbetterstack "github.com/samber/slog-betterstack"
"log/slog"
)
func main() {
logger := slog.New(
slogbetterstack.Option{
Token: "$SOURCE_TOKEN",
Endpoint: "https://$INGESTING_HOST/",
}.NewBetterstackHandler(),
)
// Logger is ready to be used
logger.Info("Hello from Better Stack!")
}
You should see your logs in Better Stack → Live tail.
Huge thanks to Samuel Berthe who maintains the slog-betterstack library as an MIT-licensed open-source! ❤️
You can use structured data in slog and send context along with your logs.
For more details check out the slog official documentation.
import (
"fmt"
"net/http"
"time"
slogbetterstack "github.com/samber/slog-betterstack"
"log/slog"
)
func main() {
logger := slog.New(
slogbetterstack.Option{
Level: slog.LevelDebug,
Token: "$SOURCE_TOKEN",
Endpoint: "https://$INGESTING_HOST/",
}.NewBetterstackHandler(),
)
// You can add common context
logger = logger.With("release", "v1.0.0")
// Log a debug message
logger.Debug("Debugging user service.", "service", "UserService")
// You can add the context using With
logger.With("userID", 123).Error("Unable to fetch user data.")
// Or use structured data
logger.
With(
slog.Group("user",
slog.String("id", "user-123"),
slog.Time("created_at", time.Now()),
),
).
With("error", fmt.Errorf("an error")).
Error("a message", slog.Int("count", 1))
}
Please reach out to us at hello@betterstack.com.
We're happy to help! 🙏
We use cookies to authenticate users, improve the product user experience, and for personalized ads. Learn more.