37 lines
854 B
Go
37 lines
854 B
Go
|
package log
|
||
|
|
||
|
import (
|
||
|
"os"
|
||
|
|
||
|
"go.uber.org/zap"
|
||
|
"go.uber.org/zap/zapcore"
|
||
|
)
|
||
|
|
||
|
var Msg *zap.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
|
||
|
mode := os.Getenv("RUNTIME_MODE")
|
||
|
logLevel := zapcore.DebugLevel
|
||
|
if mode == "production" {
|
||
|
logLevel = zapcore.InfoLevel
|
||
|
}
|
||
|
|
||
|
// Set the log level
|
||
|
config.Level = zap.NewAtomicLevelAt(logLevel)
|
||
|
|
||
|
Msg, err = config.Build() // Potential source of the error
|
||
|
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())
|
||
|
}
|