日志返回配置文件——将除调试之外的所有内容写入文件,就像日志记录到控制台一样



我正在尝试将logback和slf4j配置到eclipse中。但是,我对配置文件有点困惑。我只是希望日志输出应该写入控制台和文件,但只有调试信息应该被关闭,以写入文件。因此,我写了一些配置文件,但它很糟糕,甚至不工作。不管怎样,我怎样才能实现这个愿望呢?

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
    </encoder>
  </appender>
  <logger name="com.lordofthejars.foo" level="INFO" additivity="false">
   <appender-ref ref="STDOUT" />
  </logger>
  <root level="DEBUG">          
    <appender-ref ref="STDOUT" />
  </root>  
</configuration>

您应该使用ThresholdFilter过滤器:

ThresholdFilter过滤低于指定阈值的事件。对于级别等于或高于阈值的事件,当调用其decision()方法时,ThresholdFilter将响应NEUTRAL。但是,级别低于阈值的事件将被拒绝

文档:https://logback.qos.ch/manual/filters.html thresholdFilter

的例子:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
      <file>app.log </file>
      <append>true</append>
      <encoder>
         <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
      </encoder>
      <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
      </filter>
    </appender>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>
    <root level="debug">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>
</configuration>

您应该将fileappender的级别过滤器设置为DEBUG

<configuration>
     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
        </encoder>
     </appender>
     <appender name="fileAppender1" class="ch.qos.logback.core.FileAppender">
       <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <file>c:/logs/kplogback.log</file>
        <append>true</append>
        <encoder>
            <pattern>%d [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
    </appender>
    <root level="DEBUG">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="fileAppender1" />
    </root>
</configuration>

最新更新