需要执行RequestBasedLogging

时间:2017-01-11 13:36:06

标签: logback slf4j

我需要实现基于请求的日志记录。 基于header - log-level-header。

在我的代码中,我正在使用JAX-RS并实现了ContainerRequestFilter。

@Override
public void filter(final ContainerRequestContext context) throws IOException {

    String log_level = context.getHeaderString("log-level-header");
    //translate to actual log level
    Logger root = (Logger)LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
    root.setLevel(logLevelToSet);
}

我正在使用Logback和slf4j API。 问题是我将日志级别设置为RootLogger,这是一个单例,因此最终修改了跨应用程序的日志级别。

相反,我打算更改特定线程的日志级别(RequestBasedLogging)。这是可以实现的吗?

1 个答案:

答案 0 :(得分:0)

是的,这可以通过TurboFiltersMDC实现。 MDCFilter中的代码也应该有用。

关键是了解MDC。