由cron运行的jar文件没有编写自己的日志

时间:2014-03-18 15:56:45

标签: java cron log4j

我有一个简单的java程序(Java版本1.7),它是一个电子邮件发件人,我想在运行期间记录一些事件。所以我决定使用org.apache.log4j.Logger。我创建了log4j.properties文件,其中包含以下内容:

log4j.rootLogger=INFO, file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=Autoemail.log
log4j.appender.file.MaxFileSize=2MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss,SSS} %5p %c{1}:%L - %m%n
log4j.appender.file.encoding=UTF-8

这是我加载配置的方式:

PropertyConfigurator.configure(cl.getResource("resources/log4j.properties"));
logger = Logger.getLogger("");
logger.info("Auto email sending started...");

其中cl是类加载器。当我在本地主机上从Eclipse运行它时,一切都按预期工作,如果不存在则创建日志文件,并在下次运行时附加它。

然后我想每天早上7点自动运行这个电子邮件发件人程序。我创建了预定的cron作业,它执行以下操作:

java -jar /var/projects/Autoemail/Autoemail.jar  2>> /var/projects/Autoemail/Autoemail.err

首次运行时,它工作正常,已创建日志文件并插入了信息或错误,但从那时起,程序不会向其中写入任何事件。 jar文件运行,因为我可以看到发送的电子邮件。当我开始搜索原因并运行命令时,它显示Permission denied错误。我检查了日志文件的权限,它是:rw-rw-r--。所以我最后修改了rwxrwxrwx,但仍然没有写日志,我在syslog文件中看不到任何错误消息。我想,主人不需要sudo。 BTW服务器是Ubuntu 13/04。

有没有人知道哪些是错的,什么仍然需要,或者我该怎么办?

0 个答案:

没有答案