2017-01-11 5 views
1

リクエストベースのログを実装する必要があります。 header-log-level-headerに基づいています。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を理解することです。

関連する問題