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



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

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

我想根据在运行时提供的用户提供的路径设置此设置。我该如何使用log4j?

另外,如果我切换到记录,我该如何配置logback.xml进行相同的操作?

在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

文档中的更多详细信息。

最新更新