2017-01-11 4 views
1

요청 기반 로깅을 구현해야합니다. 헤더 - 로그 - 레벨 헤더에 기반.RequestBasedLogging을 수행해야합니다.

내 코드에서 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)의 로그 수준을 변경하려고합니다. 그것은 성취 가능하고 어떻게?

답변

0

예, 이것은 TurboFiltersMDC을 통해 달성 할 수 있습니다. MDCFilter의 코드도 도움이됩니다.

핵심은 MDC를 이해하는 것입니다.