bingobot/internal/logging/logging.go
Piper Pentagram 665717d9e7 Make logging package usage less tedious
Before, we were exposing a Logger as logging.Log. This works, but
results in code calling Logger.Log.Info() which is a little wordy.

Instead, the logger is now kept private and we expose Info, Warn and
Error as public functions that wrap logger.Info, logger.Warn and
logger.Error.
2024-11-08 14:33:57 -08:00

48 lines
834 B
Go

package logging
import (
"log/slog"
"path/filepath"
"gitlab.com/whom/bingobot/internal/config"
"gopkg.in/natefinch/lumberjack.v2"
)
type Logger struct {
*slog.Logger
}
var (
logger Logger
)
func Init(appConfig *config.AppConfig) {
lj := &lumberjack.Logger{
Filename: filepath.Join(appConfig.LogDir, appConfig.LogFile),
MaxSize: appConfig.LogMaxSizeMB,
MaxBackups: appConfig.LogMaxBackups,
MaxAge: appConfig.LogMaxAgeDays,
Compress: appConfig.LogCompression,
}
logger = Logger{
slog.New(
slog.NewJSONHandler(lj, &slog.HandlerOptions{
AddSource: appConfig.LogAddSource,
}),
),
}
}
func Info(msg string, args ...any) {
logger.Info(msg, args...)
}
func Warn(msg string, args ...any) {
logger.Warn(msg, args...)
}
func Error(msg string, args ...any) {
logger.Error(msg, args...)
}