Back to all posts
programming golang go

Go Slog

1 min read (150 words)

Who does not love logging? Heard of a lightweight, extensible, configurable logging library written in Golang - slog. Quick review on how to use it for my reference.

package main

import (
    "github.com/gookit/slog"
)

func main() {
    slog.Debug("This is DEBUG message")
    slog.Info("This is INFO message")
    slog.Notice("This is NOTICE message")
    slog.Warn("This is WARNING message")
    slog.Error("This is ERROR message")
    slog.Fatal("This is FATAL message")
}

Here is the output:

Terminal output showing different colored log levels from slog

Color could be disabled (enabled by default):

    slog.Configure(func(logger *slog.SugaredLogger) {
        f := logger.Formatter.(*slog.TextFormatter)
        f.EnableColor = false
    })

Logging in JSON:

    // use JSON formatter
    slog.SetFormatter(slog.NewJSONFormatter())
JSON formatted log output from slog

From the pkg readme - How to log into the file:

func main() {
    defer slog.MustFlush()

    // DangerLevels contains: slog.PanicLevel, slog.ErrorLevel, slog.WarnLevel
    h1 := handler.MustFileHandler("/tmp/error.log", handler.WithLogLevels(slog.DangerLevels))

    // NormalLevels contains: slog.InfoLevel, slog.NoticeLevel, slog.DebugLevel, slog.TraceLevel
    h2 := handler.MustFileHandler("/tmp/info.log", handler.WithLogLevels(slog.NormalLevels))

    slog.PushHandler(h1)
    slog.PushHandler(h2)

    // add logs
    slog.Info("info message text 1")
    slog.Error("error message text 1")
    slog.Info("info message text 2")
    slog.Error("error message text 2")
}
Dmitry Golovach
About

Dmitry Golovach

Principal Network Engineer and AI enthusiast. Always learning, always building.

Share this post

All posts