初始配置文件:
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试图在那里做一些事情,这阻止了它的工作。你有任何想法如何解决这个问题-如何在日志文件中有日志在空文件的地方?
值得补充的是,每一个"正常"的文件,意味着放入输出目录,在那里,他们是完美的。
尝试激活调试功能,看看log4j库在内部做什么…
的例子:
java -Dlog4j.debug ...
这将打印到系统。输出关于使用哪个文件初始化自己,配置了哪些记录器/追加器等有用信息
我认为这与:
log4j.rootLogger=WARN, stdout
在您的应用程序中,您是否记录错误和警告但没有输出?
试着改成:
log4j.rootLogger=INFO, stdout