首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将logback级别更改为logback.xml

将logback级别更改为logback.xml
EN

Stack Overflow用户
提问于 2013-10-29 19:42:15
回答 4查看 3.1K关注 0票数 3

因此,我在我的java应用程序中使用logback,现在客户机希望能够从GUI更改日志级别(并尽快传播),我知道有两种方法可以这样做:

代码语言:javascript
复制
Logger root = (Logger)LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
root.setLevel(Level.INFO);
or
<configuration scan="true" scanPeriod="30 seconds"> 

问题是,我想更新logback.xml文件中的级别,以便它能够自动扫描它,而且在以后的会话中,它可以从xml读取更改的级别。我很想解析整个文件,寻找这一段:

代码语言:javascript
复制
<root>
      <level value="debug"/>

并手动更改它,但是必须有更好的方法将其写入conf文件。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-30 07:59:09

我建议将日志级配置存储在单独的属性文件中,如

代码语言:javascript
复制
root_log_level=INFO

此文件可以包含在logback.xml中并从中变量。

代码语言:javascript
复制
<configuration scan="true">

  <property scope="local" file="logback_root_level.properties" />


  <root level="${root_log_level}">
   ...
  </root>
</configuration>

注意,变量的作用域应该是本地的,这将在配置rescan上刷新其值。

票数 1
EN

Stack Overflow用户

发布于 2015-08-27 07:29:55

单独属性文件中的更改不反映回更改。我找到了解决办法

您需要包含单独的xml文件,其中包含名为LOGBackIncludedFile.xml的属性。

代码语言:javascript
复制
<property name="LOG_LEVEL" value="OFF"/>

在logback.xml中包括这个文件

代码语言:javascript
复制
<configuration scan="true" scanPeriod="10 seconds">

    <include file="D:/LOGBackIncludedFile.xml" />

     <root>
        <level value="${LOG_LEVEL}" />
        <appender-ref ref="app" />      
     </root>    
</configuration>

并重新启动服务器一次,然后对属性值的动态更改将反映回。

票数 1
EN

Stack Overflow用户

发布于 2014-10-09 02:14:49

更改单独的属性文件不会使logback配置重新加载。您还需要更改logback.xml文件修改的日期,以强制重新加载。这将在单独的属性文件中重新加载属性。

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

https://stackoverflow.com/questions/19667679

复制
相关文章

相似问题

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