SpringBootのEmbeddedServletContainerでアクセスログをlogbackにする
必要なjarは
あとは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);
}
}
};
}