You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
2.2 KiB
101 lines
2.2 KiB
package logger |
|
|
|
import ( |
|
"os" |
|
|
|
"github.com/sirupsen/logrus" |
|
) |
|
|
|
var ( |
|
// Logger is the global logger instance |
|
Logger *logrus.Logger |
|
) |
|
|
|
// Init initializes the logger with the specified log level |
|
func Init(level string, devMode bool) { |
|
Logger = logrus.New() |
|
|
|
// Set output to stdout |
|
Logger.SetOutput(os.Stdout) |
|
|
|
// Set formatter - use JSON in production, text in dev |
|
if devMode { |
|
Logger.SetFormatter(&logrus.TextFormatter{ |
|
FullTimestamp: true, |
|
ForceColors: true, |
|
}) |
|
} else { |
|
Logger.SetFormatter(&logrus.JSONFormatter{ |
|
TimestampFormat: "2006-01-02T15:04:05.000Z07:00", |
|
}) |
|
} |
|
|
|
// Parse and set log level |
|
logLevel, err := logrus.ParseLevel(level) |
|
if err != nil { |
|
// Default to INFO if invalid level |
|
logLevel = logrus.InfoLevel |
|
Logger.Warnf("Invalid log level '%s', defaulting to INFO", level) |
|
} |
|
Logger.SetLevel(logLevel) |
|
} |
|
|
|
// Debug logs a debug message |
|
func Debug(args ...interface{}) { |
|
Logger.Debug(args...) |
|
} |
|
|
|
// Debugf logs a formatted debug message |
|
func Debugf(format string, args ...interface{}) { |
|
Logger.Debugf(format, args...) |
|
} |
|
|
|
// Info logs an info message |
|
func Info(args ...interface{}) { |
|
Logger.Info(args...) |
|
} |
|
|
|
// Infof logs a formatted info message |
|
func Infof(format string, args ...interface{}) { |
|
Logger.Infof(format, args...) |
|
} |
|
|
|
// Warn logs a warning message |
|
func Warn(args ...interface{}) { |
|
Logger.Warn(args...) |
|
} |
|
|
|
// Warnf logs a formatted warning message |
|
func Warnf(format string, args ...interface{}) { |
|
Logger.Warnf(format, args...) |
|
} |
|
|
|
// Error logs an error message |
|
func Error(args ...interface{}) { |
|
Logger.Error(args...) |
|
} |
|
|
|
// Errorf logs a formatted error message |
|
func Errorf(format string, args ...interface{}) { |
|
Logger.Errorf(format, args...) |
|
} |
|
|
|
// Fatal logs a fatal message and exits |
|
func Fatal(args ...interface{}) { |
|
Logger.Fatal(args...) |
|
} |
|
|
|
// Fatalf logs a formatted fatal message and exits |
|
func Fatalf(format string, args ...interface{}) { |
|
Logger.Fatalf(format, args...) |
|
} |
|
|
|
// WithField creates an entry with a single field |
|
func WithField(key string, value interface{}) *logrus.Entry { |
|
return Logger.WithField(key, value) |
|
} |
|
|
|
// WithFields creates an entry with multiple fields |
|
func WithFields(fields logrus.Fields) *logrus.Entry { |
|
return Logger.WithFields(fields) |
|
}
|
|
|