V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Junjunya
V2EX  ›  Go 编程语言

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

  •  
  •   Junjunya · 2019-03-26 09:43:06 +08:00 · 2386 次点击
    这是一个创建于 1856 天前的主题,其中的信息可能已经有所发展或是发生改变。
    RT ,beego 开发的 api 服务,上线后第二天发现日志没有记录下来。

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

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

    现在的处理方案是 在 beego 里面自己启动定时任务,如果日志文件没有了,重新对日志配置进行初始化
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3143 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 15:01 · PVG 23:01 · LAX 08:01 · JFK 11:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.