将java程序的所有输出重定向到日志文件

时间:2015-09-02 12:30:11

标签: java linux cron

我已通过在jar末尾保存此行来安排我的crontab文件:

30 12 * * * java -jar test.jar > test.log (I have also tried test.txt)

Cron已经启动了这项工作,也创建了日志文件,但该文件中没有任何内容。知道为什么会这样吗?我正在我的计划中System.out.println()

我已为该文件的每个人添加了写入权限。

在应用程序启动之前,调度程序是否会崩溃?当我通过执行crontab检查grep CRON /var/log/syslog的日志时,它给了我精美的输出,没有错误指示:

Sep  2 12:19:01 ip-172-31-18-162 CRON[2308]: (root) CMD (java -jar /opt/bitnami/apache-tomcat/webapps/apps/FullEmailReport/DJOF_FullEmail_DynamicContentReport_ScheduledPart.jar > /opt/bitnami/apache-tomcat/webapps/apps/FullEmailReport/data/app.txt)

2 个答案:

答案 0 :(得分:1)

尝试添加2>& 1以将System.err重定向到该文件:

SHFileOperation()

答案 1 :(得分:0)

这是一个有点老的问题,但我认为它可能值得指出,因为没有人提到它...

cron 不知道您的 PATH,也不知道 java 在哪里。回到我的 Solaris shell 脚本时代,我们不得不在 cron 中放置所有内容的完整路径。由于我不知道您的 java 安装的确切位置,也不知道您的 test.jar 文件,因此我无法编写完整的确切命令,但它可能类似于:

30 12 * * * /usr/bin/java -jar /home/username/myTestStuff/test.jar > /user/username/myTestStuff/logfiles/test.log 2>&1