linux – 由记录到stdin的进程生成的旋转日志

前端之家收集整理的这篇文章主要介绍了linux – 由记录到stdin的进程生成的旋转日志前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个长时间运行的进程,它将其日志文件写入stdout.我想将此输出保存到不同的文件,自动维护这些文件(如删除/存档旧文件),而无需重新启动主进程.

解决方案是将输出发送到文件(进程> log.txt),并在其上使用logrotate,但logrotate需要重新启动程序,这是不可能的.

另一个是将输出传递给cronolog(进程| cronolog),但在这种情况下,旧文件不会被删除/存档,这意味着我必须制作一个程序来为我做维护.

最好的方法是能够使用这两个实用程序,因为使用cronolog我不需要重新启动进程,而logrotate将完全按照我的意愿维护旧的日志文件.有没有办法让这两个程序相互协作?如果没有,这个问题的解决方案是什么?

解决方法

来自DJB daemontoolsMultilog可以(几乎)完全按照你的要求做.我所知道的唯一缺点是没有多少发行版带有 daemontools的包.

如果您不使用svc(daemontools的一部分)管理应用程序,则必须找到一种方法输出通过管道输出到命令

multilog t s1048576 n100 ./my_log_directory

这意味着:

> t:插入一个tai64n时间戳(可以转换为tai64nlocal的可读时间)
> s1048576:当日志文件增长到1MiB时将其旋转
> n100:保持不超过100个旋转文件
> ./my_log_directory:以…开头的任何内容.或/ – 将日志写入该目录

写入的日志将具有当前文件名,当多日志旋转日志时,它将重命名为@< tai64n timestamp> .s,其中文件显示文件旋转的时间.如果文件是安全刷新的,则扩展名为.s;如果文件可能已被截断,则为.u.

有关详细信息,请查看链接.

原文链接:/linux/398786.html

猜你在找的Linux相关文章