【发布时间】:2017-10-09 12:00:18
【问题描述】:
我有一个项目,我使用 maven jar 插件构建它。对于日志记录,我正在使用 logback。我希望我的 logback.xml 不在可执行文件中。为了读取 logback.xml,我设置了一个新的环境变量我将 logback.xml 放入其中的值。如何告诉我的项目使用此变量来查找配置文件?
【问题讨论】:
我有一个项目,我使用 maven jar 插件构建它。对于日志记录,我正在使用 logback。我希望我的 logback.xml 不在可执行文件中。为了读取 logback.xml,我设置了一个新的环境变量我将 logback.xml 放入其中的值。如何告诉我的项目使用此变量来查找配置文件?
【问题讨论】:
看看这本手册:
https://logback.qos.ch/manual/configuration.html#variableSubstitution
您可以使用如下命令:
java -Dlogback.configurationFile=/path/to/config.xml chapters.configuration.MyApp1
【讨论】:
你可以做这样的事情。在您的 jar (src/resources/) 中添加一个骨架 logback.xml,如下所示:
<configuration>
<include resource="file:${LOG_CONFIG_DIR}/logback-app.xml"/>
</configuration>
然后在启动时,您可以在 jar 外部使用 logback-app.xml,如下所示
<included>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{60} %mdc{applicationName} %mdc{environment}
%mdc{gearid} - %msg%n
</Pattern>
</layout>
</appender>
<logger name="org.apache" level="ERROR"/>
<root level="trace">
<appender-ref ref="STDOUT"/>
</root>
</included>
然后在开始时,您可以像这样连接外部文件:
java ... -DLOG_CONFIG_DIR=/directory....
【讨论】: