## Mix Logrus 基于 Logrus 扩展的日志库,支持行号、文件切分、调用堆栈 Based on Logrus extended log library, support file line, file rotate, call stack ## Overview 与原版 `Logrus` 有哪些不同? - 开启了文件行号的支持,方便调试程序,使用 `logger.ReportCaller` 关闭。 - 设置了国内使用习惯的时间格式 `2006-01-02 15:04:05.000`,使用 `logger.Formatter.TimestampFormat` 修改。 - 扩展了日志文件轮转功能,并自动保留指定天数的文件数。 - 扩展了 `mix-go/console` 的 panic 捕获功能,可以实现捕获 panic 堆栈信息到日志,这个功能让我们不需要再从标准输出中查找 panic 错误信息。 - 支持 `GORM` 的 SQL 日志打印美化。 ## Installation - 安装 ``` go get -u github.com/mix-go/logrus ``` ## Usage - 配置 `os.Stdout` 输出 ~~~ logger := logrus.NewLogger() logger.SetOutput(os.Stdout) ~~~ 输出格式 ~~~ INFO[2020-09-18 18:36:23.342]hello.go:16 This is the content ~~~ - 同时配置 `os.Stdout` 与 `io.Writer` 输出 >[info] NewFileWriter(filename string, maxFiles int) io.Writer ~~~ logger := logrus.NewLogger() file := logrus.NewFileWriter("/tmp/logs/test.log", 7) writer := io.MultiWriter(os.Stdout, file) logger.SetOutput(writer) ~~~ 输出格式 ~~~ time=2020-09-18 16:18:51.470 level=info msg=This is the content file=hello.go:16 ~~~ 文件轮转格式 ~~~ /tmp/logs/test.log.20200916 ~~~ ## GORM 支持 GORM 支持 `SetLogger` 打印日志,但是由于 GORM 是使用的 `Print` 方法,因此打印的多个参数会直接拼接到一起,难以阅读 ``` time=2020-09-25 11:06:42.103 level=info msg=sql/foo.go:335319.978µsSELECT * FROM `foo` WHERE _id = ? `foo`.`id` ASC LIMIT 1[122569]1 file=logger.go:32 ``` 开启 `GORM` 支持 ``` logger := logrus.NewLogger() logger.SupportGORM = true // 这个配置会美化日志 gorm.LogMode(true) gorm.SetLogger(logger) ``` 开启后日志 ``` time=2020-09-25 11:06:42.103 level=info msg=sql /foo.go:335 319.978µs SELECT * FROM `foo` WHERE _id = ? `foo`.`id` ASC LIMIT 1 [122569] 1 file=logger.go:32 ``` ## License Apache License Version 2.0, http://www.apache.org/licenses/