mirror of
https://github.com/Gouryella/drip.git
synced 2026-02-23 21:00:44 +00:00
105 lines
2.2 KiB
Go
105 lines
2.2 KiB
Go
package utils
|
|
|
|
import (
|
|
"os"
|
|
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
)
|
|
|
|
var logger *zap.Logger
|
|
|
|
// InitLogger initializes the global logger for client
|
|
// verbose: if true, shows debug level logs; if false, shows error level only
|
|
func InitLogger(verbose bool) error {
|
|
var config zap.Config
|
|
|
|
if verbose {
|
|
// Verbose mode: show debug and above
|
|
config = zap.NewDevelopmentConfig()
|
|
config.EncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder
|
|
} else {
|
|
// Production mode: only show errors
|
|
config = zap.NewProductionConfig()
|
|
config.Level = zap.NewAtomicLevelAt(zapcore.ErrorLevel)
|
|
}
|
|
|
|
config.OutputPaths = []string{"stdout"}
|
|
config.ErrorOutputPaths = []string{"stderr"}
|
|
|
|
var err error
|
|
logger, err = config.Build()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// InitServerLogger initializes logger for server with info level by default
|
|
func InitServerLogger(debug bool) error {
|
|
var config zap.Config
|
|
|
|
if debug {
|
|
// Debug mode: show all logs
|
|
config = zap.NewDevelopmentConfig()
|
|
config.EncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder
|
|
} else {
|
|
// Production mode: show info and above
|
|
config = zap.NewProductionConfig()
|
|
}
|
|
|
|
config.OutputPaths = []string{"stdout"}
|
|
config.ErrorOutputPaths = []string{"stderr"}
|
|
|
|
var err error
|
|
logger, err = config.Build()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// GetLogger returns the global logger instance
|
|
func GetLogger() *zap.Logger {
|
|
if logger == nil {
|
|
// Fallback to a basic logger if not initialized
|
|
logger, _ = zap.NewProduction()
|
|
}
|
|
return logger
|
|
}
|
|
|
|
// Info logs an info message
|
|
func Info(msg string, fields ...zap.Field) {
|
|
GetLogger().Info(msg, fields...)
|
|
}
|
|
|
|
// Debug logs a debug message
|
|
func Debug(msg string, fields ...zap.Field) {
|
|
GetLogger().Debug(msg, fields...)
|
|
}
|
|
|
|
// Warn logs a warning message
|
|
func Warn(msg string, fields ...zap.Field) {
|
|
GetLogger().Warn(msg, fields...)
|
|
}
|
|
|
|
// Error logs an error message
|
|
func Error(msg string, fields ...zap.Field) {
|
|
GetLogger().Error(msg, fields...)
|
|
}
|
|
|
|
// Fatal logs a fatal message and exits
|
|
func Fatal(msg string, fields ...zap.Field) {
|
|
GetLogger().Fatal(msg, fields...)
|
|
os.Exit(1)
|
|
}
|
|
|
|
// Sync flushes any buffered log entries
|
|
func Sync() {
|
|
if logger != nil {
|
|
logger.Sync()
|
|
}
|
|
}
|