Reorganise logging
This commit is contained in:
61
log/log.go
61
log/log.go
@@ -1,36 +1,63 @@
|
||||
package log
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"go.uber.org/zap"
|
||||
"go.uber.org/zap/zapcore"
|
||||
|
||||
"git.fjla.uk/owlboard/timetable-mgr/helpers"
|
||||
)
|
||||
|
||||
var Msg *zap.Logger
|
||||
// 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
|
||||
|
||||
// Create a custom configuration with a human-readable "Console" encoder
|
||||
config := zap.NewDevelopmentConfig()
|
||||
config.EncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder // Adds color to log levels
|
||||
|
||||
// Determine the log level based on the runtime mode
|
||||
logLevel := zapcore.DebugLevel
|
||||
if helpers.Runtime != "debug" {
|
||||
logLevel = zapcore.InfoLevel
|
||||
mode := os.Getenv("runtime")
|
||||
if mode == "" {
|
||||
mode = "prod"
|
||||
}
|
||||
|
||||
// Set the log level
|
||||
config.Level = zap.NewAtomicLevelAt(logLevel)
|
||||
logLevel := zapcore.InfoLevel
|
||||
if mode == "debug" {
|
||||
logLevel = zapcore.DebugLevel
|
||||
}
|
||||
|
||||
Msg, err = config.Build() // Potential source of the error
|
||||
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())
|
||||
}
|
||||
|
||||
// Log the selected log level (optional, can be helpful for debugging)
|
||||
Msg.Info("Log level set to: " + logLevel.String())
|
||||
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...)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user