2026-03-16 18:06:59 +03:00

55 lines
1.1 KiB
Go

package logger
import (
"io"
"log"
"os"
c "scripts/internal/config"
"github.com/rs/zerolog"
)
const timeFormat = "2006-01-02 15:04:05"
var Log zerolog.Logger
func MustInit() {
writers := make([]io.Writer, 0, 2)
zerolog.TimeFieldFormat = timeFormat
consoleWriter := zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: timeFormat}
writers = append(writers, consoleWriter)
if c.Conf.LogSettings.EnableFile {
logFile, err := os.OpenFile(c.Conf.LogSettings.FileLocation, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
log.Fatal(err)
}
writers = append(writers, logFile)
}
multi := zerolog.MultiLevelWriter(writers...)
zCtx := zerolog.New(multi).Level(detectedLogLevel(c.Conf.LogSettings.ConsoleLevel)).With().Timestamp()
if c.Conf.LogSettings.EnableCaller {
zCtx = zCtx.Caller()
}
Log = zCtx.Logger()
}
func detectedLogLevel(level string) zerolog.Level {
switch level {
case "TRACE":
return zerolog.TraceLevel
case "DEBUG":
return zerolog.DebugLevel
case "WARN":
return zerolog.WarnLevel
case "INFO":
return zerolog.InfoLevel
default:
return zerolog.InfoLevel
}
}