log4j linux问题 - 日志文件为空

时间:2014-05-20 13:03:00

标签: java linux logging log4j

初始配置文件:

log4j.rootLogger=WARN, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=<%p> %d{dd-MM-yyyy HH:mm:ss} %m%n
log4j.appender.stdout.Threshold=DEBUG

稍后将其配置为将日志输出到运行时指定的位置:

private static Logger configureLogger(ConflictsCheckerArgs dataModel) {
    Logger logger = Logger.getLogger(ApplicationController.class);

    FileAppender newAppender = new FileAppender();
    newAppender.setFile(new File(dataModel.getOutputPath(), "logs.log").getPath());
    newAppender.setName("logsToFile");
    newAppender.setLayout(new PatternLayout("%d %-5p [%c{1}] %m%n"));
    newAppender.setThreshold(Level.INFO);
    newAppender.setAppend(true);
    newAppender.activateOptions();

    Logger.getRootLogger().addAppender(newAppender);

    return logger;
}

问题是,这个文件是创建的,但它是空的。我假设,在jar /目标位置程序中没有写访问权限,也许log4j尝试在那里做一些事情并且阻止它工作。您是否有任何想法如何解决此问题 - 如何在该日志文件中记录日志而不是空文件?

值得补充的是,其他每一个&#34;正常&#34;那些打算放入输出目录的文件就在那里,它们非常好。

2 个答案:

答案 0 :(得分:1)

尝试激活调试功能以查看log4j库在内部执行的操作...

示例:

java -Dlog4j.debug ...

这将打印到System.out有用的信息,该信息用于初始化自己的文件,已配置的记录器/追加器等。

答案 1 :(得分:0)

我认为这与:

log4j.rootLogger=WARN, stdout

在您的应用程序中,您是否记录错误和警告但没有输出?

尝试将其更改为:

log4j.rootLogger=INFO, stdout