golang 日志统一处理?
資深大佬 : seaguest 57
目前系统到处都打印日志,有各自模块的 logger ( gorm ,gin ,业务日志…),目前用的是 supervisor 管理,但是当系统并发数较高,日志打印过多,会导致 supervisor 的 cpu 飚升。
尽管各个日志都有 logger ,可以设置 SetOutput 直接写到文件,但是总有一些第三方库输出到 stdout ,所以没有办法实现统一定向到日志文件。目前找到的一个办法是:
file, err := os.OpenFile("log", os.O_APPEND|os.O_WRONLY|os.O_CREATE, os.ModePerm) syscall.Dup2(int(file.Fd()), int(os.Stdout.Fd())) syscall.Dup2(int(file.Fd()), int(os.Stderr.Fd()))
这样可以将 stdout 直接输出到日志,可以实现自己的需求,但是感觉不像是一个常规的方案,有没有比较好的日志方案,尽量简洁,能做到所有日志写入文件,最好能实现自动 rotate 。
大佬有話說 (6)