beego 日志文件被删除后,怎么自动创建一个?

2019-03-26 09:43:06 +08:00
 Junjunya
RT ,beego 开发的 api 服务,上线后第二天发现日志没有记录下来。

排查了一番,确定是 每天的日志打包脚本会把日志给 mv 走,然后 beego 不会重新创建日志文件, 来问下大佬有啥好的解决方案。
当前的方案是打算,自己在程序里面写定时任务,在日志打包完之后重启程序。
2388 次点击
所在节点    Go 编程语言
5 条回复
truehyp
2019-03-26 09:58:13 +08:00
日志脚本打包脚本里面 cp log,然后清空日志文件
monsterxx03
2019-03-26 10:11:20 +08:00
打包脚本移走日志后给你的 service 发一个 signal (比如 kill -USR1 `cat /var/run/web.pid`), service 监听这个 signal, 重新创建日志文件. logrotate 处理 nginx 日志就是这样
Junjunya
2019-03-26 11:02:58 +08:00
@truehyp @monsterxx03

因为线上还有大量以前的项目,所以主管希望在尽量不改动日志处理脚本的情况下解决这个问题。
当前看来,是没啥更好的方案了
EscYezi
2019-03-26 17:58:01 +08:00
再写一个脚本,定时扫描指定目录是否有日志文件,没有就创建(
Junjunya
2019-03-27 09:41:29 +08:00
@EscYezi 这个方案也不行,beego 日志是读取了文件的句柄,并且删除日志文件后 不会判断文件是否还存在。

现在的处理方案是 在 beego 里面自己启动定时任务,如果日志文件没有了,重新对日志配置进行初始化

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

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

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

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

© 2021 V2EX