This change migrates the internal/logging package to a singleton pattern. It now exports a Log variable which can be acquired from any other package.
36 lines
631 B
Go
36 lines
631 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 (
|
|
Log Logger
|
|
)
|
|
|
|
func InitLogger(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,
|
|
}
|
|
|
|
Log = Logger{
|
|
slog.New(
|
|
slog.NewJSONHandler(lj, &slog.HandlerOptions{
|
|
AddSource: appConfig.LogAddSource,
|
|
}),
|
|
),
|
|
}
|
|
}
|