首页 > 解决方案 > 通过 logback 设置 Undertow 日志级别

问题描述

我在项目中使用 undertow 作为嵌入式休息服务器。该项目使用 logback 进行日志记录。我想做的是通过我的 logback 配置配置所有 Undertow 的日志记录。

我知道我可以通过传递这样的系统属性来启用 sl4fj:

System.setProperty("org.jboss.logging.provider", "slf4j"

但是,它并不打算配置所有 Undertow 的日志记录。例如,如果我在处理程序中的 HttpServerExchange 对象上将 http 状态代码设置为 501,我总是会看到打印的 RuntimeException。

此异常来自 HttpServerExchange setStatusCode(...) 方法。

public HttpServerExchange setStatusCode(final int statusCode) {
    if (statusCode < 0 || statusCode > 999) {
        throw new IllegalArgumentException("Invalid response code");
    }
    int oldVal = state;
    if (allAreSet(oldVal, FLAG_RESPONSE_SENT)) {
        throw UndertowMessages.MESSAGES.responseAlreadyStarted();
    }
    if(statusCode >= 500) {
        **if(UndertowLogger.ERROR_RESPONSE.isDebugEnabled()) {
            UndertowLogger.ERROR_RESPONSE.debugf(new RuntimeException(), "Setting error code %s for exchange %s", statusCode, this);
        }**
    }
    this.state = oldVal & ~MASK_RESPONSE_CODE | statusCode & MASK_RESPONSE_CODE;
    return this;
}

如何通过 logback 将 UndertowLogger.ERROR_RESPONSE 的日志级别设置为 INFO?

谢谢

标签: javaloggingundertow

解决方案


推荐阅读