package log import ( "fmt" "github.com/sirupsen/logrus" "gopkg.in/natefinch/lumberjack.v2" ) type LumberjackHook struct { Logger *lumberjack.Logger } func (hook *LumberjackHook) Fire(entry *logrus.Entry) error { // Write to the lumberjack.Logger (log file with rotation) _, err := hook.Logger.Write(hook.Format(entry)) return err } // Implement the logrus.Hook interface method Levels func (hook *LumberjackHook) Levels() []logrus.Level { return logrus.AllLevels } func (hook *LumberjackHook) Format(entry *logrus.Entry) []byte { // Format the timestamp with timezone offset timestamp := entry.Time.Format("2006-01-02T15:04:05-07:00") // Format the log message logMessage := fmt.Sprintf("%s[%s] %s\n", entry.Level.String(), timestamp, entry.Message) return []byte(logMessage) }