Logback配置文件——将除调试之外的所有内容写入文件,作为日志记录到控制台

问题描述 投票:0回答:2

我正在尝试将 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>
java slf4j logback
2个回答
4
投票

您应该使用

ThresholdFilter
过滤器:

ThresholdFilter 过滤低于指定阈值的事件。对于级别等于或高于阈值的事件,ThresholdFilter 在调用其decide() 方法时将响应 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>

0
投票

您应该将 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>
© www.soinside.com 2019 - 2024. All rights reserved.