Log4J动态更改文件路径

我想动态更改log4j日志文件的路径和文件名。

我已经阅读了很多页面,几乎每个页面都告诉我应该使用此处的系统属性:

[如何动态更改log4j日志文件?](http://codingdict.com/questions/141150

所以我的log4j.properties文件看起来像这样:

log4j.logger.JDBC_LOGGER=INFO,jdbcTests

log4j.additivity.JDBC_LOGGER = false

log4j.appender.jdbcTests=org.apache.log4j.FileAppender

log4j.appender.jdbcTests.File=${my.log}

log4j.appender.jdbcTests.layout=org.apache.log4j.PatternLayout

log4j.appender.jdbcTests.append = false

log4j.appender.jdbcTests.layout.ConversionPattern=%d{yyyy mm dd HH:mm:ss} %5p %C:Line %L - %m%n

在我的主要方法中,我将设置新的系统属性:

System.setProperty("{my.log", "C:/logfile.log");

但是我只是得到一个错误:

log4j:ERROR setFile(null,false) call failed.

java.io.FileNotFoundException:

at java.io.FileOutputStream.open(Native Method)....

当我尝试使用以下命令读取设置的系统属性时:

System.out.println(System.getProperty("my.log"));

它返回null。我做错了什么?

回答:

我认为您的意思是“ my.log”而不是“ {my.log”

System.setProperty("my.log", "C:/logfile.log");

我无法想象一旦记录开始就可以更改此设置,因此您需要在程序中尽早设置此设置。

顺便说一句:您可以对FileAppender进行子类化,以使其表现出您喜欢的任何方式。

以上是 Log4J动态更改文件路径 的全部内容, 来源链接: utcz.com/qa/401514.html

回到顶部