80 lines
1.7 KiB
Go
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")
|
||
|
|
}
|