55 lines
1.1 KiB
Go
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
|
|
}
|
|
}
|