mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-03-31 08:19:54 +02:00
61 lines
1.2 KiB
Go
61 lines
1.2 KiB
Go
package logger
|
|
|
|
import (
|
|
"os"
|
|
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
)
|
|
|
|
type Logger struct {
|
|
*zap.Logger
|
|
}
|
|
|
|
func New(level, output string) *Logger {
|
|
var zapLevel zapcore.Level
|
|
switch level {
|
|
case "debug":
|
|
zapLevel = zapcore.DebugLevel
|
|
case "info":
|
|
zapLevel = zapcore.InfoLevel
|
|
case "warn":
|
|
zapLevel = zapcore.WarnLevel
|
|
case "error":
|
|
zapLevel = zapcore.ErrorLevel
|
|
default:
|
|
zapLevel = zapcore.InfoLevel
|
|
}
|
|
|
|
config := zap.NewProductionConfig()
|
|
config.Level = zap.NewAtomicLevelAt(zapLevel)
|
|
config.EncoderConfig.TimeKey = "timestamp"
|
|
config.EncoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
|
|
|
|
var writeSyncer zapcore.WriteSyncer
|
|
if output == "stdout" {
|
|
writeSyncer = zapcore.AddSync(os.Stdout)
|
|
} else {
|
|
file, err := os.OpenFile(output, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
|
|
if err != nil {
|
|
writeSyncer = zapcore.AddSync(os.Stdout)
|
|
} else {
|
|
writeSyncer = zapcore.AddSync(file)
|
|
}
|
|
}
|
|
|
|
core := zapcore.NewCore(
|
|
zapcore.NewJSONEncoder(config.EncoderConfig),
|
|
writeSyncer,
|
|
zapLevel,
|
|
)
|
|
|
|
logger := zap.New(core, zap.AddCaller(), zap.AddStacktrace(zapcore.ErrorLevel))
|
|
|
|
return &Logger{Logger: logger}
|
|
}
|
|
|
|
func (l *Logger) Fatal(msg string, fields ...interface{}) {
|
|
l.Logger.Fatal(msg, zap.Any("fields", fields))
|
|
}
|
|
|