如何在 jar 内部 xml 配置更改和应用程序重启后进行 SLF4J+Logback 刷新设置?
How to make SLF4J+Logback refresh settings after jar inner xml configuration changes and application restart?
我在我的桌面应用程序中使用 SLF4J
和 Logback
。
应用程序可以找到配置文件 (target/classes/logback.xml
) 并以正确的方式配置记录器。但是当我更改配置文件 (<root level="debug">
) 并重新启动应用程序时,我的记录器设置没有任何变化。
这是我的配置:
<configuration debug="true" scan="true" scanPeriod="10 seconds">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${consoleLayoutPattern}</pattern>
</encoder>
</appender>
<appender name="LOG_FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${fileName}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${filePattern}</fileNamePattern>
<maxHistory>60</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>${rollingFilePatternLayoutPattern}</pattern>
</encoder>
</appender>
<root level="error">
<appender-ref ref="LOG_FILE" />
<appender-ref ref="CONSOLE" />
</root>
</configuration>
我做错了什么?是否有任何解决方案可以在应用程序重启后跟踪 jar 内部 xml
配置更改并刷新日志记录设置?
为了不重新构建您的项目,您实际上必须将日志配置文件放在项目之外。我的意思是在您的应用程序属性中放置此文件的路径。
如果您正在使用 Spring 启动,您可以像这样在 application.properties
文件中配置日志配置文件的路径:
logging.config=/home/path_to/logback.xml
在您启动应用程序时执行此操作,它将使用指定的应用程序,您将不必重建项目。
由于此路径可能会根据您的环境而变化,我强烈建议您在暂存或生产环境中外部化日志配置文件,如前所述,但也使用外部 application.properties 文件。
您可以在启动 java 程序时简单地执行此操作:
java -Dspring.config.location=file:///home/.../application.properties
十二要素网站上进一步解释了此类良好做法,配置部分为 here。
希望对您有所帮助
我在我的桌面应用程序中使用 SLF4J
和 Logback
。
应用程序可以找到配置文件 (target/classes/logback.xml
) 并以正确的方式配置记录器。但是当我更改配置文件 (<root level="debug">
) 并重新启动应用程序时,我的记录器设置没有任何变化。
这是我的配置:
<configuration debug="true" scan="true" scanPeriod="10 seconds">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${consoleLayoutPattern}</pattern>
</encoder>
</appender>
<appender name="LOG_FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${fileName}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${filePattern}</fileNamePattern>
<maxHistory>60</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>${rollingFilePatternLayoutPattern}</pattern>
</encoder>
</appender>
<root level="error">
<appender-ref ref="LOG_FILE" />
<appender-ref ref="CONSOLE" />
</root>
</configuration>
我做错了什么?是否有任何解决方案可以在应用程序重启后跟踪 jar 内部 xml
配置更改并刷新日志记录设置?
为了不重新构建您的项目,您实际上必须将日志配置文件放在项目之外。我的意思是在您的应用程序属性中放置此文件的路径。
如果您正在使用 Spring 启动,您可以像这样在 application.properties
文件中配置日志配置文件的路径:
logging.config=/home/path_to/logback.xml
在您启动应用程序时执行此操作,它将使用指定的应用程序,您将不必重建项目。
由于此路径可能会根据您的环境而变化,我强烈建议您在暂存或生产环境中外部化日志配置文件,如前所述,但也使用外部 application.properties 文件。
您可以在启动 java 程序时简单地执行此操作:
java -Dspring.config.location=file:///home/.../application.properties
十二要素网站上进一步解释了此类良好做法,配置部分为 here。
希望对您有所帮助