package logger import ( "os" "github.com/sirupsen/logrus" ) var ( defaultLogger *logrus.Logger ) func init() { defaultLogger = logrus.New() defaultLogger.SetOutput(os.Stdout) defaultLogger.SetFormatter(&logrus.JSONFormatter{ TimestampFormat: "2006-01-02T15:04:05.000Z07:00", }) // Set log level based on environment if os.Getenv("ENV") == "production" { defaultLogger.SetLevel(logrus.InfoLevel) } else { defaultLogger.SetLevel(logrus.DebugLevel) } } // NewLogger creates a new logger entry with a specific component name func NewLogger(component string) *logrus.Entry { return defaultLogger.WithField("component", component) } // SetLogLevel sets the logging level func SetLogLevel(level logrus.Level) { defaultLogger.SetLevel(level) } // GetLogger returns the default logger instance func GetLogger() *logrus.Logger { return defaultLogger } // Fields type for structured logging type Fields logrus.Fields // WithFields creates a new logger entry with specified fields func WithFields(fields Fields) *logrus.Entry { return defaultLogger.WithFields(logrus.Fields(fields)) }