2013-10-28 47 views
0

的log4j:异常不捆绑在罐子

# Root logger option 
log4j.rootLogger=ERROR, file 

# Direct log messages to a log file 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=${fileName} 
log4j.appender.file.MaxFileSize=1MB 
log4j.appender.file.MaxBackupIndex=1 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{YYYY-MM-DD HH:mm:ss} %-5p %c{1}:%L - %m%n 

我有这个在我的主要方法,当我跑我的应用程序:PropertyConfigurator.configure("log4j.properties");

问题:

  1. 我保持log4j.properties在项目的根文件,并试图以我的项目导出为可运行罐子,当我提取其中的内容,或再次重新导入,我其实没有看到log4j.properties。 log4j与jar捆绑在一起应该做些什么?

  2. 我把log4j文件放在src文件夹下。但是当我运行我的应用程序时,我得到了下面的异常。即使在移动log4j文件时,为了使log4j正常工作,应该更改什么?

这是例外,我得到:

log4j:ERROR setFile(null,true) call failed. 
java.io.FileNotFoundException: 
    at java.io.FileOutputStream.open(Native Method) 
    at java.io.FileOutputStream.<init>(Unknown Source) 
    at java.io.FileOutputStream.<init>(Unknown Source) 
    at org.apache.log4j.FileAppender.setFile(FileAppender.java:290) 
    at org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:194) 
    at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:164) 

回答

0

log4j.properties最好应该不是jar文件本身的一部分。客户(或API的使用者)有责任提供一个。

为了回答你问题的第二部分,尝试更换$ {}名与路径,如C:\ mylogs.log

+0

对不起,在应对延迟!我得到它的工作!我们不需要单独提供log4j,而是可以在我们的课程中编写log4j来创建Logger和Appender。对于第二部分,我不认为这是答案。替换$ {filename}与放置log4j的位置无关 – Mercenary