Files
aitrade/pkg/config/logger.go
T
kaedwen ea141eb012
Build and Push Docker Image / build-and-push (push) Failing after 1m41s
initial
2026-07-02 20:09:44 +02:00

56 lines
1.2 KiB
Go

package config
import (
"log/slog"
"os"
"github.com/rs/zerolog"
slogzerolog "github.com/samber/slog-zerolog"
"github.com/scmhub/ibapi"
)
// SetupLogger creates a logger based on the config and sets up ibapi logging
func (c *Config) SetupLogger() *slog.Logger {
// Parse log level
logLevel := parseLogLevel(c.LogLevel)
// Create shared zerolog logger with config level
zerolog.SetGlobalLevel(slogToZerologLevel(logLevel))
zerologLogger := zerolog.New(os.Stdout).With().Timestamp().Logger()
// Set it for ibapi
ibapi.SetLogger(zerologLogger)
// Use it as backend for slog
return slog.New(slogzerolog.Option{
Level: logLevel,
Logger: &zerologLogger,
}.NewZerologHandler())
}
func parseLogLevel(level string) slog.Level {
switch level {
case "debug":
return slog.LevelDebug
case "warn":
return slog.LevelWarn
case "error":
return slog.LevelError
default:
return slog.LevelInfo
}
}
func slogToZerologLevel(level slog.Level) zerolog.Level {
switch level {
case slog.LevelDebug:
return zerolog.DebugLevel
case slog.LevelWarn:
return zerolog.WarnLevel
case slog.LevelError:
return zerolog.ErrorLevel
default:
return zerolog.InfoLevel
}
}