Java Logback-将多个级别记录到一个文件中
我需要创建一个只记录跟踪和调试事件的文件,但我无法让它工作,我不知道这是否可行 已尝试搜索反转阈值过滤器的选项或在LevelFilter上指定多个级别的方法,但未成功 我想实现这一点的唯一方法是创建2个appende,从一个到另一个完全相同,但其中一个指定LevelFilter用于跟踪,另一个指定用于调试Java Logback-将多个级别记录到一个文件中,java,logging,logback,Java,Logging,Logback,我需要创建一个只记录跟踪和调试事件的文件,但我无法让它工作,我不知道这是否可行 已尝试搜索反转阈值过滤器的选项或在LevelFilter上指定多个级别的方法,但未成功 我想实现这一点的唯一方法是创建2个appende,从一个到另一个完全相同,但其中一个指定LevelFilter用于跟踪,另一个指定用于调试 有没有其他方法可以做到这一点?因为我不太喜欢复制代码/配置。简单的方法可能是创建自定义过滤器,如下所示 public class CustomFilter extends Filter<
有没有其他方法可以做到这一点?因为我不太喜欢复制代码/配置。简单的方法可能是创建自定义过滤器,如下所示
public class CustomFilter extends Filter<ILoggingEvent> {
private String levels;
public String getLevels() {
return levels;
}
public void setLevels(String levels) {
this.levels = levels;
}
private Level[] level;
@Override
public FilterReply decide(ILoggingEvent arg0) {
if (level == null && levels != null) {
setLevels();
}
if (level != null) {
for (Level lev : level) {
if (lev == arg0.getLevel()) {
return FilterReply.ACCEPT;
}
}
}
return FilterReply.DENY;
}
private void setLevels() {
if (!levels.isEmpty()) {
level = new Level[levels.split("\\|").length];
int i = 0;
for (String str : levels.split("\\|")) {
level[i] = Level.valueOf(str);
i++;
}
}
}
}
在logback.xml中添加过滤器
<configuration>
<appender name="fileAppender1" class="ch.qos.logback.core.FileAppender">
<filter class="com.swasthik.kp.logback.filters.CustomFilter">
<levels>TRACE|DEBUG</levels>
</filter>
<file>c:/logs/kplogback.log</file>
<append>true</append>
<encoder>
<pattern>%d [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<root level="TRACE">
<appender-ref ref="fileAppender1" />
</root>
</configuration>