
gookit/slog 一个易于使用的,可配置、可扩展的日志库。支持多个级别,输出到多文件;内置文件日志处理、自动切割、清理、压缩等增强功能
完整变更记录: https://github.com/gookit/slog/compare/v0.5.1...v0.5.2
RotateMode ,支持在旋转时间创建日志文件。https://github.com/gookit/slog/commit/8c4a9a08a9b3432a699f6770b73935ecfd42e5b8通过配置 hander.Config 的 FilePerm 设置创建的 log 文件权限标志。
h1 := handler.MustFileHandler("/tmp/error.log", handler.WithLogLevels(slog.DangerLevels), handler.WithFilePerm(0644), // <- 设置创建文件的权限 ) slog.PushHandler(h1) RotateMode 文件切割模式:
设置 RotateMode 为 ModeCreate 可以让日志文件,只按照分割时间创建。
h1 := handler.MustRotateFile( "/tmp/error.log", rotatefile.EveryHour, // 按每小时分割 handler.WithLogLevels(slog.DangerLevels), handler.WithRotateMode(rotatefile.ModeCreate), // 设置 RotateMode 为 ModeCreate ) slog.PushHandler(h1) 如上面的示例配置 logfile 为 /tmp/error.log。设置为 ModeCreate 模式时,实际不会创建这个文件, 会按照实际分割时间来创建:
/tmp/error.log.20230618_1500 /tmp/error.log.20230618_1600 /tmp/error.log.20230618_1700 ... Tips:
ModeCreate模式可以适用于命令行工具应用。因为它们是每次执行完就退出,ModeRename模式下可能无法按时分割文件。
而使用 ModeRename 模式会是如下效果:
/tmp/error.log # <- 日志始终写入这个文件 /tmp/error.log.20230618_1500 /tmp/error.log.20230618_1600 /tmp/error.log.20230618_1700 ... 更多使用说明请看 README
1 elechi 2023-06-20 14:32:40 +08:00 不错,国人的轮子 |
2 duanquanyong 2023-06-20 14:59:53 +08:00 跟官方日志库同一个名字 |
3 hzzhzzdogee 2023-06-20 16:47:23 +08:00 go 尚未发布的官方结构化日志 log/slog |
4 CodeDrift 2023-06-20 17:00:54 +08:00 支持一下。学 go 的时候,看过源码。当作学习资料了 |
5 wsseo 2023-06-26 00:45:44 +08:00 官方的 slog 怎么没有输出到文件的介绍? |