![根据日期将流程输出重定向到文件](https://linux22.com/image/614460/%E6%A0%B9%E6%8D%AE%E6%97%A5%E6%9C%9F%E5%B0%86%E6%B5%81%E7%A8%8B%E8%BE%93%E5%87%BA%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E6%96%87%E4%BB%B6.png)
我目前正在将所有服务的标准输出(stdout
和stderr
)重定向到一个文件,通过如下方式启动:
java blablaargs &> service.out
SVCPID=$!
但是,该文件变得非常大。是否可以在不更改服务程序本身(可能通过某些过滤命令)的情况下按天拆分输出?
注意:“在 Java 中使用日志框架”不是我正在寻找的答案,有时重要的输出会转到stdout
,不受我的控制。
答案1
你应该配置日志旋转为您做这件事——这就是它的工作。
答案2
看看 cronolog 之类的东西 http://cronolog.org
它将完全按照您的要求进行操作,根据模板拆分日志文件,并从 STDIN 读取。
答案3
我建议使用 syslog(syslog-ng
例如,用于过滤和旋转功能),特别是如果您已经在系统中使用它。
为了捕获stdout
并stderr
记录到系统日志,你可以将程序的输出通过管道传输到logger
,例如:(来自https://blogs.oracle.com/chrisg/entry/redirecting_output_to_syslog)
my_script | logger -p local6.debug -t my_script 2>&1
查看男子 (1) 伐木工。