无法获取创建的log4j日志文件

时间:2014-04-11 12:37:37

标签: java jar log4j

我知道之前已经问过这个问题,但没有一个答案对我有用。我有以下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.jarlog4j-core-2.0-rc1.jar。然而,当我将项目导出为可运行的jar时,不会创建任何日志文件,也没有任何内容写入stdout。

我在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代码中添加更多内容才能使其正常工作吗?

1 个答案:

答案 0 :(得分:-1)

对于log4j 2,您需要通过xml配置文件进行配置:有关详情,请参阅Configuration Log4j 2

如果要使用属性文件,则必须将lib降级为log4j 1.x