logback外化

Pan*_*kaj 10 logback slf4j

目前,我有的logback配置文件即logback.xmlsrc/main/resources.我想设置日志记录级别,但我希望在战争之外进行控制.

我能想到的一个解决方案是在属性文件中将其外部化,在服务器启动时加载它并替换占位符.有没有更好的方法呢?我们不能保持logback.xml战争档外?

<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${catalina.base}/logs/logFile.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- daily rollover -->
        <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
        <!-- keep 7 days' worth of history -->
        <maxHistory>7</maxHistory>
    </rollingPolicy>
    <encoder>
        <pattern>%date [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
</appender>

<root level="DEBUG">
    <appender-ref ref="FILE"/>
</root>
Run Code Online (Sandbox Code Playgroud)

Dav*_*sel 9

如果您只想更改日志级别,则无需覆盖整个文件,您可以执行以下操作:

<root level="${log.level:-INFO}">
Run Code Online (Sandbox Code Playgroud)

然后,如果您设置系统属性:

-Dlog.level=DEBUG
Run Code Online (Sandbox Code Playgroud)

它将覆盖默认的"INFO".


小智 8

我建议你使用2个logback配置文件.类路径中的第一个定义为:

<configuration scan="true">
    <property file="/otherfolder/project.properties" />
    <include file="/otherfolder/logback.xml"/>
</configuration>
Run Code Online (Sandbox Code Playgroud)

然后将所有配置放在另一个配置中.Logback将扫描两个文件以获取更新.

  • 让我的upvote指向正确的方向.应用此问题时的一个问题可能是,您必须将包含的/otherfolder/logback.xml包含在<included>而不是<configuration>标记中,如[here]所示(https://logback.qos.ch/manual /configuration.html#fileInclusion). (4认同)

Cek*_*eki 5

外部属性是从外部控制日志记录级别的一种方法.Logback的文件包含功能是另一个.顺便说一下,自动重新加载功能适用于包含的配置文件,但不适用于属性文件.