This repository has been archived on 2026-04-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
core/server/logging/logger.go
Jeffrey Smith ed3e9363f2 Changeset 0.33.0 (#207)
Co-authored-by: Jeffrey Smith <jasafpro@gmail.com>
Co-committed-by: Jeffrey Smith <jasafpro@gmail.com>
2026-03-19 21:37:32 +00:00

40 lines
1010 B
Go

// Package logging provides structured logging configuration for
// Chat Switchboard using the standard library's log/slog package.
// Configured via LOG_FORMAT ("text"|"json") and LOG_LEVEL env vars.
package logging
import (
"log/slog"
"os"
"strings"
)
// Init configures the global slog logger.
//
// - format: "json" for machine-parseable output, anything else for
// human-readable key=value pairs (backward-compatible default).
// - level: "debug", "info" (default), "warn", "error".
func Init(format, level string) {
var lvl slog.Level
switch strings.ToLower(level) {
case "debug":
lvl = slog.LevelDebug
case "warn", "warning":
lvl = slog.LevelWarn
case "error":
lvl = slog.LevelError
default:
lvl = slog.LevelInfo
}
opts := &slog.HandlerOptions{Level: lvl}
var handler slog.Handler
if strings.ToLower(format) == "json" {
handler = slog.NewJSONHandler(os.Stdout, opts)
} else {
handler = slog.NewTextHandler(os.Stdout, opts)
}
slog.SetDefault(slog.New(handler))
}