需要执行 RequestBasedLogging
Need to perform RequestBasedLogging
我需要实现基于请求的日志记录。
基于 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) 的日志级别。是否可以实现?如何实现?
是的,这可以通过 TurboFilters and MDC. The code in MDCFilter 实现,应该也有帮助。
关键是要了解MDC。
我需要实现基于请求的日志记录。 基于 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) 的日志级别。是否可以实现?如何实现?
是的,这可以通过 TurboFilters and MDC. The code in MDCFilter 实现,应该也有帮助。
关键是要了解MDC。