gpt4 book ai didi

java - logback:两个appender,多个logger,不同级别

转载 作者:IT老高 更新时间:2023-10-28 20:31:19 24 4
gpt4 key购买 nike

我想在我的应用程序(Spring 集成)中有两个日志文件,debug.log 和 main.log。我想在 INFO 级别运行 main.log,在 DEBUG 级别运行 debug.log。这可以通过 appenders 上的过滤器来实现。我想根据源将不同级别记录到附加程序。换句话说

<logger name="org.springframework" level="ERROR">
<appender-ref ref="main" />
</logger>
<logger name="org.springframework" level="DEBUG">
<appender-ref ref="debug" />
</logger>
<logger name="com.myapp" level="INFO">
<appender-ref ref="main" />
</logger>
<logger name="com.myapp" level="DEBUG">
<appender-ref ref="debug" />
</logger>

总结一下:

  1. Spring 记录器
    • 主要 -> 错误
    • 调试 -> 调试
  2. com.myapp 记录器
    • 主要 -> 信息
    • 调试 -> 调试

因此,我必须让记录器在 DEBUG 运行,并且附加程序上的阈值过滤器不够细。

更新使问题更加清晰

最佳答案

创建一个 ThresholdLoggerFilter 类,该类可以放在 appender 上,例如:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<filter class="com.myapp.ThresholdLoggerFilter">
<logger>org.springframework</logger>
<level>ERROR</level>
</filter>
</appender>

以下代码有效

package com.myapp;

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 ThresholdLoggerFilter extends Filter<ILoggingEvent> {
private Level level;
private String logger;

@Override
public FilterReply decide(ILoggingEvent event) {
if (!isStarted()) {
return FilterReply.NEUTRAL;
}

if (!event.getLoggerName().startsWith(logger))
return FilterReply.NEUTRAL;

if (event.getLevel().isGreaterOrEqual(level)) {
return FilterReply.NEUTRAL;
} else {
return FilterReply.DENY;
}
}

public void setLevel(Level level) {
this.level = level;
}

public void setLogger(String logger) {
this.logger = logger;
}

public void start() {
if (this.level != null && this.logger != null) {
super.start();
}
}
}

关于java - logback:两个appender,多个logger,不同级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10734025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com