64 lines
1.3 KiB
Go
64 lines
1.3 KiB
Go
package log
|
|
|
|
import (
|
|
"os"
|
|
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
)
|
|
|
|
// Logger object is exported to facilitate migration
|
|
// to the single logger instance. Use outside `package log`
|
|
// should be avoided.
|
|
var post *zap.Logger
|
|
|
|
// Initialises the logger
|
|
func init() {
|
|
var err error
|
|
mode := os.Getenv("runtime")
|
|
if mode == "" {
|
|
mode = "prod"
|
|
}
|
|
|
|
logLevel := zapcore.InfoLevel
|
|
if mode == "debug" {
|
|
logLevel = zapcore.DebugLevel
|
|
}
|
|
|
|
config := zap.NewDevelopmentConfig()
|
|
config.EncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder
|
|
config.Level = zap.NewAtomicLevelAt(logLevel)
|
|
post, err = config.Build(zap.AddCallerSkip(1))
|
|
if err != nil {
|
|
panic("Failed to initialize logger: " + err.Error())
|
|
}
|
|
|
|
defer post.Sync()
|
|
|
|
Info("Logger initialised", zap.String("level", logLevel.String()), zap.String("runtime", mode))
|
|
}
|
|
|
|
func Info(msg string, fields ...zap.Field) {
|
|
post.Info(msg, fields...)
|
|
}
|
|
|
|
func Debug(msg string, fields ...zap.Field) {
|
|
post.Debug(msg, fields...)
|
|
}
|
|
|
|
func Warn(msg string, fields ...zap.Field) {
|
|
post.Warn(msg, fields...)
|
|
}
|
|
|
|
func Error(msg string, fields ...zap.Field) {
|
|
post.Error(msg, fields...)
|
|
}
|
|
|
|
func Fatal(msg string, fields ...zap.Field) {
|
|
post.Fatal(msg, fields...)
|
|
}
|
|
|
|
func Panic(msg string, fields ...zap.Field) {
|
|
post.Panic(msg, fields...)
|
|
}
|