Files
demoCode/golang/logUse/logUse.go
2026-03-23 11:01:29 +08:00

80 lines
1.7 KiB
Go

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