首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jar内部xml配置更改和应用程序重启后进行SLF4J+Logback刷新设置?

如何在jar内部xml配置更改和应用程序重启后进行SLF4J+Logback刷新设置?
EN

Stack Overflow用户
提问于 2019-08-20 21:21:08
回答 1查看 759关注 0票数 0

我在我的桌面应用程序中使用带有LogbackSLF4J

应用程序可以找到配置文件(target/classes/logback.xml),并以正确的方式配置记录器。但是,当我更改配置文件(<root level="debug">)并重新启动应用程序时,我的记录器设置没有任何变化。

下面是我的配置:

代码语言:javascript
复制
<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配置更改并刷新日志设置吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-23 15:53:39

为了不重新构建您的项目,您实际上必须将日志配置文件放在项目之外。我的意思是在你的应用程序属性中放置一个指向这个文件的路径。

如果您使用的是Spring Boot,则可以在application.properties文件中配置日志配置文件的路径,如下所示:

代码语言:javascript
复制
logging.config=/home/path_to/logback.xml

这样做,当您要启动您的应用程序时,它将使用指定的应用程序,并且您将不必重新构建项目。

由于此路径可能会根据您的环境而变化,因此我强烈建议您在暂存或生产环境中将日志配置文件外部化(如前所述),但也要使用外部application.properties文件。

您可以在启动java程序时简单地执行以下操作:

代码语言:javascript
复制
java -Dspring.config.location=file:///home/.../application.properties

像这样的良好实践在十二因素网站上有进一步的解释,配置部分是here

希望这能有所帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57574685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档