根据log4j.properties文件中用户输入的值对文件位置进行参数化

时间:2017-12-27 13:53:24

标签: java logging log4j logback properties-file

在我的log4j.properties文件中,我有一行日志文件位置:

log4j.appender.file.File=<file path>.log

我想在运行时根据用户提供的路径设置它。我如何使用Log4J做到这一点?

另外,如果我切换到Logback,如何配置logback.xml来执行相同操作?

1 个答案:

答案 0 :(得分:0)

在Log4J中,您可以使用如下变量:

log4j.appender.logfile.File=${log.file}.log

然后,在启动应用程序时,您将为log.file提供一个Java系统属性值。例如:

java -Dlog.file=/some/path/app MyApp

这将导致log4j.appender.logfile.File的以下派生值:

 /some/path/app.log

Logback提供相同的功能。这是一个使用Logback的XML配置的例子:

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
  <file>${log.file}.log</file>
  <encoder>
    <pattern>%msg%n</pattern>
  </encoder>
</appender>

您可以在运行应用程序时定义log.dir地址,如下所示:

java -Dlog.file=/some/path/app MyApp

更多详情in the docs