makotanの勉強日記

勉強したこととか設定系のメモとかそういうのを集めたもの

SpringBootのEmbeddedServletContainerでアクセスログをlogbackにする

必要なjarは

ch.qos.logback:logback-access

あとはEmbeddedServletContainerCustomizerを使ってセットする。jarの中にあるのでfile名の取得のところが気持ち悪いけど、設定で変更可能にすると幸せになれるかも

@Bean
public EmbeddedServletContainerCustomizer containerCustomizer(){
    return new EmbeddedServletContainerCustomizer() {
        @Override
        public void customize(ConfigurableEmbeddedServletContainer factory) {

            if(factory instanceof TomcatEmbeddedServletContainerFactory){
                TomcatEmbeddedServletContainerFactory containerFactory = (TomcatEmbeddedServletContainerFactory) factory;

                URL url = this.getClass().getResource("/logback-access.xml");
                LogbackValve logbackValve = new LogbackValve();
                logbackValve.setFilename(url.getFile());
                containerFactory.addContextValves(logbackValve);


            }

        }
    };
}