【问题标题】:Cannot get log4j log file created无法创建 log4j 日志文件
【发布时间】: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.jarlog4j-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自己。

标签: java jar log4j


【解决方案1】:

对于log4j 2,您需要通过 xml 配置文件进行配置:请参阅Configuration Log4j 2 了解更多信息。

如果你想使用属性文件,你必须将你的库降级到log4j 1.x

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多