electricity_bill_calc_service/logger/logger.go

133 lines
2.6 KiB
Go

package logger
import (
"os"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
var (
logger *zap.Logger
sugaredLogger *zap.SugaredLogger
)
func init() {
consoleWriterSync := zapcore.AddSync(os.Stderr)
rollingWriterSync := zapcore.AddSync(newRollingWriter())
consoleEncoderConfig := zap.NewProductionEncoderConfig()
consoleEncoderConfig.EncodeTime = zapcore.RFC3339TimeEncoder
consoleEncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder
jsonEncoderConfig := zap.NewProductionEncoderConfig()
jsonEncoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
consoleEncoder := zapcore.NewConsoleEncoder(consoleEncoderConfig)
jsonEncoder := zapcore.NewJSONEncoder(jsonEncoderConfig)
core := zapcore.NewTee(
zapcore.NewCore(
consoleEncoder,
consoleWriterSync,
zapcore.DebugLevel,
),
zapcore.NewCore(
jsonEncoder,
rollingWriterSync,
zapcore.DebugLevel,
),
)
logger = zap.New(core).Named("App")
sugaredLogger = logger.Sugar()
logger.Info("Logger initialized.")
}
func GetLogger() *zap.Logger {
return logger
}
func Panic(msg string, fields ...zap.Field) {
logger.Panic(msg, fields...)
}
func Fatal(msg string, fields ...zap.Field) {
logger.Fatal(msg, fields...)
}
func Error(msg string, fields ...zap.Field) {
logger.Error(msg, fields...)
}
func Warn(msg string, fields ...zap.Field) {
logger.Warn(msg, fields...)
}
func Info(msg string, fields ...zap.Field) {
logger.Info(msg, fields...)
}
func Debug(msg string, fields ...zap.Field) {
logger.Debug(msg, fields...)
}
func Panicr(v ...interface{}) {
sugaredLogger.Panic(v...)
}
func Panicf(format string, v ...interface{}) {
sugaredLogger.Panicf(format, v...)
}
func Errorr(v ...interface{}) {
sugaredLogger.Panic(v...)
}
func Errorf(format string, v ...interface{}) {
sugaredLogger.Panicf(format, v...)
}
func Warnr(v ...interface{}) {
sugaredLogger.Warn(v...)
}
func Warnf(format string, v ...interface{}) {
sugaredLogger.Warnf(format, v...)
}
func Infor(v ...interface{}) {
sugaredLogger.Info(v...)
}
func Infof(format string, v ...interface{}) {
sugaredLogger.Infof(format, v...)
}
func Debugr(v ...interface{}) {
sugaredLogger.Debug(v...)
}
func Debugf(format string, v ...interface{}) {
sugaredLogger.Debugf(format, v...)
}
func Named(names ...string) *zap.Logger {
var l = logger
for _, name := range names {
l = l.Named(name)
}
return l
}
func NamedSugar(names ...string) *zap.SugaredLogger {
return Named(names...).Sugar()
}
func With(fields ...zap.Field) *zap.Logger {
return logger.With(fields...)
}
func WithSugar(fields ...zap.Field) *zap.SugaredLogger {
return logger.With(fields...).Sugar()
}