linux – 由记录到stdin的进程生成的旋转日志
我有一个长时间运行的进程,它将其日志文件写入stdout.我想将此输出保存到不同的文件,自动维护这些文件(如删除/存档旧文件),而无需重新启动主进程.
解决方案是将输出发送到文件(进程> log.txt),并在其上使用logrotate,但logrotate需要重新启动程序,这是不可能的. 另一个是将输出传递给cronolog(进程| cronolog),但在这种情况下,旧文件不会被删除/存档,这意味着我必须制作一个程序来为我做维护. 最好的方法是能够使用这两个实用程序,因为使用cronolog我不需要重新启动进程,而logrotate将完全按照我的意愿维护旧的日志文件.有没有办法让这两个程序相互协作?如果没有,这个问题的解决方案是什么? 解决方法
来自DJB
daemontools的
Multilog可以(几乎)完全按照你的要求做.我所知道的唯一缺点是没有多少发行版带有
daemontools的包.
如果您不使用svc(daemontools的一部分)管理应用程序,则必须找到一种方法将输出通过管道输出到命令 multilog t s1048576 n100 ./my_log_directory 这意味着: > t:插入一个tai64n时间戳(可以转换为tai64nlocal的可读时间) 写入的日志将具有当前文件名,当多日志旋转日志时,它将重命名为@< tai64n timestamp> .s,其中文件名显示文件旋转的时间.如果文件是安全刷新的,则扩展名为.s;如果文件可能已被截断,则为.u. 有关详细信息,请查看链接. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |