32 lines
912 B
Go
32 lines
912 B
Go
|
|
// Package log constructs the process-wide structured logger.
|
||
|
|
//
|
||
|
|
// Every record carries the broker's build info so aggregated log backends can
|
||
|
|
// correlate events across versions and deployments.
|
||
|
|
package log
|
||
|
|
|
||
|
|
import (
|
||
|
|
"io"
|
||
|
|
"log/slog"
|
||
|
|
|
||
|
|
"kode.naiv.no/olemd/forgejo-mcp-broker/internal/buildinfo"
|
||
|
|
)
|
||
|
|
|
||
|
|
// New returns a JSON slog.Logger writing to w. When debug is true the
|
||
|
|
// logger starts at Debug level, otherwise at Info.
|
||
|
|
func New(w io.Writer, debug bool) *slog.Logger {
|
||
|
|
level := slog.LevelInfo
|
||
|
|
if debug {
|
||
|
|
level = slog.LevelDebug
|
||
|
|
}
|
||
|
|
h := slog.NewJSONHandler(w, &slog.HandlerOptions{Level: level})
|
||
|
|
return slog.New(h).With(
|
||
|
|
slog.String("service", "fjmcp-broker"),
|
||
|
|
slog.String("version", buildinfo.Version),
|
||
|
|
slog.String("git_rev", buildinfo.GitRevision),
|
||
|
|
)
|
||
|
|
}
|
||
|
|
|
||
|
|
// Discard returns a logger that drops every record. Useful in tests.
|
||
|
|
func Discard() *slog.Logger {
|
||
|
|
return slog.New(slog.DiscardHandler)
|
||
|
|
}
|