mirror of
https://codeberg.org/git-pages/git-pages.git
synced 2026-05-14 03:01:48 +00:00
Add a log level config option
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
# as the intrinsic default value.
|
||||
|
||||
log-format = "text"
|
||||
log-level = "info"
|
||||
|
||||
[server]
|
||||
# Use "-" to disable the handler.
|
||||
|
||||
@@ -38,6 +38,7 @@ type Config struct {
|
||||
Insecure bool `toml:"-" env:"insecure"`
|
||||
Features []string `toml:"features"`
|
||||
LogFormat string `toml:"log-format" default:"text"`
|
||||
LogLevel string `toml:"log-level" default:"info"`
|
||||
Server ServerConfig `toml:"server"`
|
||||
Wildcard []WildcardConfig `toml:"wildcard"`
|
||||
Storage StorageConfig `toml:"storage"`
|
||||
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
"os"
|
||||
"runtime/debug"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
slogmulti "github.com/samber/slog-multi"
|
||||
@@ -55,15 +56,29 @@ func InitObservability() {
|
||||
|
||||
logHandlers := []slog.Handler{}
|
||||
|
||||
logLevel := slog.LevelInfo
|
||||
switch strings.ToLower(config.LogLevel) {
|
||||
case "debug":
|
||||
logLevel = slog.LevelDebug
|
||||
case "info":
|
||||
logLevel = slog.LevelInfo
|
||||
case "warn":
|
||||
logLevel = slog.LevelWarn
|
||||
case "error":
|
||||
logLevel = slog.LevelError
|
||||
default:
|
||||
log.Println("unknown log level", config.LogLevel)
|
||||
}
|
||||
|
||||
switch config.LogFormat {
|
||||
case "none":
|
||||
// nothing to do
|
||||
case "text":
|
||||
logHandlers = append(logHandlers,
|
||||
slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{}))
|
||||
slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{Level: logLevel}))
|
||||
case "json":
|
||||
logHandlers = append(logHandlers,
|
||||
slog.NewJSONHandler(os.Stderr, &slog.HandlerOptions{}))
|
||||
slog.NewJSONHandler(os.Stderr, &slog.HandlerOptions{Level: logLevel}))
|
||||
default:
|
||||
log.Println("unknown log format", config.LogFormat)
|
||||
}
|
||||
@@ -118,6 +133,7 @@ func InitObservability() {
|
||||
if enableLogs {
|
||||
logHandlers = append(logHandlers, sentryslog.Option{
|
||||
AddSource: true,
|
||||
LogLevel: levelsFromMinimum(logLevel),
|
||||
}.NewSentryHandler(context.Background()))
|
||||
}
|
||||
}
|
||||
@@ -125,6 +141,18 @@ func InitObservability() {
|
||||
slog.SetDefault(slog.New(slogmulti.Fanout(logHandlers...)))
|
||||
}
|
||||
|
||||
// From sentryslog, because for some reason they don't make it public.
|
||||
func levelsFromMinimum(minLevel slog.Level) []slog.Level {
|
||||
allLevels := []slog.Level{slog.LevelDebug, slog.LevelInfo, slog.LevelWarn, slog.LevelError, sentryslog.LevelFatal}
|
||||
var result []slog.Level
|
||||
for _, level := range allLevels {
|
||||
if level >= minLevel {
|
||||
result = append(result, level)
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func FiniObservability() {
|
||||
if hasSentry() {
|
||||
sentry.Flush(2 * time.Second)
|
||||
|
||||
Reference in New Issue
Block a user