根据日期将流程输出重定向到文件

根据日期将流程输出重定向到文件

我目前正在将所有服务的标准输出(stdoutstderr)重定向到一个文件,通过如下方式启动:

java blablaargs &> service.out
SVCPID=$!

但是,该文件变得非常大。是否可以在不更改服务程序本身(可能通过某些过滤命令)的情况下按天拆分输出?

注意:“在 Java 中使用日志框架”不是我正在寻找的答案,有时重要的输出会转到stdout,不受我的控制。

答案1

你应该配置日志旋转为您做这件事——这就是它的工作。

答案2

看看 cronolog 之类的东西 http://cronolog.org

它将完全按照您的要求进行操作,根据模板拆分日志文件,并从 STDIN 读取。

答案3

我建议使用 syslog(syslog-ng例如,用于过滤和旋转功能),特别是如果您已经在系统中使用它。

为了捕获stdoutstderr记录到系统日志,你可以将程序的输出通过管道传输到logger,例如:(来自https://blogs.oracle.com/chrisg/entry/redirecting_output_to_syslog

my_script | logger -p local6.debug -t my_script 2>&1

查看男子 (1) 伐木工

相关内容