Golang Go语言有按时间/日期切割的log库吗?

发布于 1周前 作者 phonegap100 来自 Go语言

Golang Go语言有按时间/日期切割的log库吗?

类似 log4j/logback 那种的

21 回复

更多关于Golang Go语言有按时间/日期切割的log库吗?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


#2 这个是按文件大小的.

#5 看起来非常符合需求, 多谢大佬

如果不考虑 Windows ,只在 Linux 运行的话,不如打到 syslog 里去,通过 logrotate 任务来切分。
能用运维手段解决的就没必要用开发手段解决。运维手段用的基础设施往往是久经考验的。

#9 log4j/logback/log4j2 之类的都是开发手段, 也是久经考验.

好吧,对运维方式处理问题不感兴趣的纯程,byebye

uber 开源的 zap 日志库

#12 这个看起来完全不支持日志切割

为什么就不考虑 linux 系统里自带又好用的 logrorate

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结合lumberjacklogrus是一个流行的日志库,提供了丰富的功能,包括日志级别控制、自定义格式、钩子等。而lumberjack则是一个日志切割组件,可以与logrus配合使用,实现按时间/日期切割日志的功能。

此外,也可以通过对Go语言标准库log进行封装,并集成日志切割的功能,来满足特定的需求。这种方法需要一定的编程技巧和对Go语言标准库的了解。

综上所述,Go语言生态中确实存在能够按时间/日期切割日志的库和解决方案。开发者可以根据自己的需求和项目的具体情况,选择合适的日志库和切割组件来实现这一功能。

回到顶部