golang 有按时间/日期切割的 log 库吗?

2022-01-18 14:55:02 +08:00
 zoharSoul

类似 log4j/logback 那种的

4590 次点击
所在节点    Go 编程语言
20 条回复
waising
2022-01-18 15:02:54 +08:00
z657386160z
2022-01-18 15:06:04 +08:00
zoharSoul
2022-01-18 15:08:27 +08:00
@z657386160z #2 这个是按文件大小的.
exkernel
2022-01-18 15:25:34 +08:00
mcfog
2022-01-18 15:33:15 +08:00
zoharSoul
2022-01-18 15:36:15 +08:00
@mcfog #5 看起来非常符合需求, 多谢大佬
janxin
2022-01-18 15:53:01 +08:00
lwch
2022-01-18 15:57:11 +08:00
adoal
2022-01-18 17:52:00 +08:00
如果不考虑 Windows ,只在 Linux 运行的话,不如打到 syslog 里去,通过 logrotate 任务来切分。
能用运维手段解决的就没必要用开发手段解决。运维手段用的基础设施往往是久经考验的。
zoharSoul
2022-01-18 18:09:36 +08:00
@adoal #9 log4j/logback/log4j2 之类的都是开发手段, 也是久经考验.
adoal
2022-01-18 19:02:29 +08:00
好吧,对运维方式处理问题不感兴趣的纯程,byebye
quzard
2022-01-18 19:12:17 +08:00
uber 开源的 zap 日志库
zoharSoul
2022-01-18 19:14:53 +08:00
@quzard #12 这个看起来完全不支持日志切割
Immortal
2022-01-18 19:25:30 +08:00
为什么就不考虑 linux 系统里自带又好用的 logrorate
securityCoding
2022-01-18 21:04:54 +08:00
my3157
2022-01-18 21:23:12 +08:00
logrotate + signal ,完美解决
dingyaguang117
2022-01-18 22:03:45 +08:00
我写了一个,原理大概就是 加锁 和 rename
xuyang9978
2022-01-18 22:57:07 +08:00
#1 的那个也不错,使用很方便,不过作者已经不维护了
hululu
2022-01-22 17:16:40 +08:00
const rotate = "00 00 00 * * *"
func RotateCrond(logger *lumberjack.Logger, rotate string) {
rotateCrondOnce.Do(func() {
c := cron.New(cron.WithSeconds())
_, _ = c.AddFunc(rotate, func() {
_ = logger.Rotate()
})
c.Start()
})
}
SillyChenBrother
2022-02-18 10:03:39 +08:00
我觉得很多都不好用,就自己写了一个。

支持日志输出到控制台或文件,支持很多配置,如打印函数调用行,配置日志级别等。
支持日志层级输出到不同文件,且支持文件切割,清除过期日志文件等。
使用接口契约,你可以自行再次封装该库,我留有 SetCallerSkip 给你继续封装。

https://github.com/hunterhug/golog

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/829001

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX