diff --git a/golang/logUse.go b/golang/logUse.go new file mode 100644 index 0000000..5be41bf --- /dev/null +++ b/golang/logUse.go @@ -0,0 +1,79 @@ +package main + +import ( + "os" + + nested "github.com/antonfisher/nested-logrus-formatter" + "github.com/sirupsen/logrus" + "gopkg.in/natefinch/lumberjack.v2" +) + +type FileHook struct { + formatter logrus.Formatter + fileLogger *lumberjack.Logger +} + +func (hook *FileHook) Fire(entry *logrus.Entry) error { + line, err := hook.formatter.Format(entry) + if err != nil { + return err + } + _, err = hook.fileLogger.Write(line) + return err +} + +func (hook *FileHook) Levels() []logrus.Level { + return logrus.AllLevels +} + +func main() { + // 创建文件输出 + fileLogger := &lumberjack.Logger{ + Filename: "logrus.log", + MaxSize: 1, + MaxBackups: 3, + MaxAge: 30, + Compress: true, + } + + // 创建 nested 格式化器(文件用) + fileFormatter := &nested.Formatter{ + HideKeys: true, + FieldsOrder: []string{"component", "category"}, + NoColors: true, // 文件不要颜色 + ShowFullLevel: true, // 显示完整级别 + TimestampFormat: "2006-01-02 15:04:05.000", + } + + // 文件 Hook + fileHook := &FileHook{ + fileLogger: fileLogger, + formatter: fileFormatter, + } + logrus.AddHook(fileHook) + + // 显示具体日志位置。 + //logrus.SetReportCaller(true) + + // 控制台输出(带颜色) + logrus.SetOutput(os.Stdout) + logrus.SetFormatter(&nested.Formatter{ + HideKeys: true, + FieldsOrder: []string{"component", "category"}, + NoColors: false, // 控制台带颜色 + }) + + logrus.SetLevel(logrus.InfoLevel) + + // 记录日志 + logrus.Info("This is an info message") + logrus.Warn("This is a warning message") + logrus.Error("This is an error message") + + // 测试带字段的日志 + logrus.WithFields(logrus.Fields{ + "component": "auth", + "user_id": 12345, + "ip": "192.168.1.100", + }).Info("User login success") +}