# README
console-slog
A handler for slog that prints colorized logs, similar to zerolog's console writer output without sacrificing performances.
Installation
go get github.com/phsym/console-slog@latest
Example
package main
import (
"errors"
"log/slog"
"os"
"github.com/phsym/console-slog"
)
func main() {
logger := slog.New(
console.NewHandler(os.Stderr, &console.HandlerOptions{Level: slog.LevelDebug}),
)
slog.SetDefault(logger)
slog.Info("Hello world!", "foo", "bar")
slog.Debug("Debug message")
slog.Warn("Warning message")
slog.Error("Error message", "err", errors.New("the error"))
logger = logger.With("foo", "bar").
WithGroup("the-group").
With("bar", "baz")
logger.Info("group info", "attr", "value")
}
When setting console.HandlerOptions.AddSource
to true
:
console.NewHandler(os.Stderr, &console.HandlerOptions{Level: slog.LevelDebug, AddSource: true})
Performances
See benchmark file for details.
The handler itself performs quite well compared to std-lib's handlers. It does no allocation:
goos: linux
goarch: amd64
pkg: github.com/phsym/console-slog
cpu: Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz
BenchmarkHandlers/dummy-4 128931026 8.732 ns/op 0 B/op 0 allocs/op
BenchmarkHandlers/console-4 849837 1294 ns/op 0 B/op 0 allocs/op
BenchmarkHandlers/std-text-4 542583 2097 ns/op 4 B/op 2 allocs/op
BenchmarkHandlers/std-json-4 583784 1911 ns/op 120 B/op 3 allocs/op
However, the go 1.21.0 slog.Logger
adds some overhead:
goos: linux
goarch: amd64
pkg: github.com/phsym/console-slog
cpu: Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz
BenchmarkLoggers/dummy-4 1239873 893.2 ns/op 128 B/op 1 allocs/op
BenchmarkLoggers/console-4 483354 2338 ns/op 128 B/op 1 allocs/op
BenchmarkLoggers/std-text-4 368828 3141 ns/op 132 B/op 3 allocs/op
BenchmarkLoggers/std-json-4 393322 2909 ns/op 248 B/op 4 allocs/op
# Packages
No description provided by the author
# Functions
No description provided by the author
No description provided by the author
NewHandler creates a Handler that writes to w, using the given options.
No description provided by the author
# Constants
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Variables
No description provided by the author
# Structs
No description provided by the author
HandlerOptions are options for a ConsoleHandler.
No description provided by the author
# Interfaces
No description provided by the author
# Type aliases
No description provided by the author