【发布时间】:2014-04-11 12:37:36
【问题描述】:
我知道以前有人问过这个问题,但没有一个答案对我有用。我有以下log4j.properties 文件:
# Define the root logger with appender file
log4j.rootLogger = INFO, FILE, stdout
# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=/home/sutureself/log.out
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
# Define the layout for the stdout appender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}
我在<workspace-root>/resources 中有这个文件(我在src 和<workspace-root> 中尝试过。resources 文件夹已添加到 Eclipse 的构建路径中,以及 jar 文件log4j-api-2.0-rc1.jar和log4j-core-2.0-rc1.jar。但是,当我将项目导出为可运行的 jar 时,不会创建日志文件,也不会将任何内容写入标准输出。
我阅读了关于 SO 的其他一些答案,它需要位于类路径上的文件夹中。所以我在我的代码中添加了以下内容:
String classpath = System.getProperty("java.class.path");
System.out.println("Classpath [" + classpath + "]");
...并将属性文件放在打印出来的位置,但仍然没有文件或标准输出。在我使用记录器的每个 java 文件中,都实现了它:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class SutureSelfExample {
private static Logger log = LogManager.getLogger(SutureSelfExample.class.getName());
...
log.info("Log something interesting.");
}
如果我使用以下命令运行 jar:
./SutureSelfRunnable.jar -Dlog4j.configuration=./log4j.properties
./SutureSelfRunnable.jar -cp /home/sutureself/
...还是什么都没有。
缺少什么?我是否需要在我的 Java 代码中添加更多内容才能使其正常工作?
【问题讨论】:
-
将
log4j.properties(和罐子)放入/home/sutureself/;如果那是您想要的 CLASSPATH。我会推荐/home/sutureself/jars自己。