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

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)
}