Golang Go语言有按时间/日期切割的log库吗?
Golang Go语言有按时间/日期切割的log库吗?
类似 log4j/logback 那种的
更多关于Golang Go语言有按时间/日期切割的log库吗?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
#2 这个是按文件大小的.
#5 看起来非常符合需求, 多谢大佬
如果不考虑 Windows ,只在 Linux 运行的话,不如打到 syslog 里去,通过 logrotate 任务来切分。
能用运维手段解决的就没必要用开发手段解决。运维手段用的基础设施往往是久经考验的。
#9 log4j/logback/log4j2 之类的都是开发手段, 也是久经考验.
好吧,对运维方式处理问题不感兴趣的纯程,byebye
uber 开源的 zap 日志库
为什么就不考虑 linux 系统里自带又好用的 logrorate
+1
logrotate + signal ,完美解决
我写了一个,原理大概就是 加锁 和 rename
#1 的那个也不错,使用很方便,不过作者已经不维护了
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()
})
}
我觉得很多都不好用,就自己写了一个。
支持日志输出到控制台或文件,支持很多配置,如打印函数调用行,配置日志级别等。
支持日志层级输出到不同文件,且支持文件切割,清除过期日志文件等。
使用接口契约,你可以自行再次封装该库,我留有 SetCallerSkip 给你继续封装。
https://github.com/hunterhug/golog
在Go语言中,确实存在能够按时间/日期切割日志的库。Go语言的标准库log
提供了基础的日志功能,但对于生产环境来说,通常需要更高级的功能,如日志级别的控制、日志格式的自定义以及按时间/日期切割日志等。
对于按时间/日期切割日志的需求,可以使用第三方库来实现,比如logrus
结合lumberjack
。logrus
是一个流行的日志库,提供了丰富的功能,包括日志级别控制、自定义格式、钩子等。而lumberjack
则是一个日志切割组件,可以与logrus
配合使用,实现按时间/日期切割日志的功能。
此外,也可以通过对Go语言标准库log
进行封装,并集成日志切割的功能,来满足特定的需求。这种方法需要一定的编程技巧和对Go语言标准库的了解。
综上所述,Go语言生态中确实存在能够按时间/日期切割日志的库和解决方案。开发者可以根据自己的需求和项目的具体情况,选择合适的日志库和切割组件来实现这一功能。