logger.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package logger
  2. import (
  3. "os"
  4. "github.com/sirupsen/logrus"
  5. )
  6. var (
  7. defaultLogger *logrus.Logger
  8. )
  9. func init() {
  10. defaultLogger = logrus.New()
  11. defaultLogger.SetOutput(os.Stdout)
  12. defaultLogger.SetFormatter(&logrus.JSONFormatter{
  13. TimestampFormat: "2006-01-02T15:04:05.000Z07:00",
  14. })
  15. // Set log level based on environment
  16. if os.Getenv("ENV") == "production" {
  17. defaultLogger.SetLevel(logrus.InfoLevel)
  18. } else {
  19. defaultLogger.SetLevel(logrus.DebugLevel)
  20. }
  21. }
  22. // NewLogger creates a new logger entry with a specific component name
  23. func NewLogger(component string) *logrus.Entry {
  24. return defaultLogger.WithField("component", component)
  25. }
  26. // SetLogLevel sets the logging level
  27. func SetLogLevel(level logrus.Level) {
  28. defaultLogger.SetLevel(level)
  29. }
  30. // GetLogger returns the default logger instance
  31. func GetLogger() *logrus.Logger {
  32. return defaultLogger
  33. }
  34. // Fields type for structured logging
  35. type Fields logrus.Fields
  36. // WithFields creates a new logger entry with specified fields
  37. func WithFields(fields Fields) *logrus.Entry {
  38. return defaultLogger.WithFields(logrus.Fields(fields))
  39. }