1

Logback を使用して DEBUG.log、WARN.log、INFO.log を作成するために、各レベルを別々にログに記録することは可能ですか?

4

3 に答える 3

2

あなたは次のようなフィルターを書くことができます

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.filter.Filter;
import ch.qos.logback.core.spi.FilterReply;

public class WarnFilter extends Filter<ILoggingEvent> {

    @Override
    public FilterReply decide(ILoggingEvent event) {
        if (Level.DEBUG.equals(event.getLevel())) {
            return FilterReply.ACCEPT;
        } else {
            return FilterReply.DENY;
        }
    }

}

次に、フィルターを使用してアペンダーを構成します

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <filter class="logback.WarnFilter" />
    <encoder>
        <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} [%t] %p %c - %m [%class %M %L] %ex{full} %n</pattern>
    </encoder>
</appender>
于 2013-01-30T10:25:44.920 に答える
2

新しいフィルターを作成する必要はありません 。LevelFilterはあなたのケースにすぐに適合します。

        <configuration>
          <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
              <level>INFO</level>
              <onMatch>ACCEPT</onMatch>
              <onMismatch>DENY</onMismatch>
            </filter>
            <encoder>
              <pattern>
                %-4relative [%thread] %-5level %logger{30} - %msg%n
              </pattern>
            </encoder>
          </appender>
          <root level="DEBUG">
            <appender-ref ref="CONSOLE" />
          </root>
        </configuration>
于 2013-01-30T11:22:03.433 に答える
0

このようにlog4j.propertiesを構成します

log4j.rootLogger=InfoAppender, DebugAppender
# setup Info
log4j.appender.InfoAppender=org.apache.log4j.RollingFileAppender
log4j.appender.InfoAppender.Threshold=INFO
log4j.appender.InfoAppender.File=quiet.log
...


# setup debug
log4j.appender.DebugAppender=org.apache.log4j.RollingFileAppender
log4j.appender.DebugAppender.Threshold=DEBUG
log4j.appender.DebugAppender.File=loud.log
于 2013-01-30T10:40:45.893 に答える