我正在使用带有嵌入式tomcat的spring boot。我当前正在如下配置访问日志(在我的application.properties文件中):

server.tomcat.accesslog.directory=log
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%t INFO "some pattern..."
server.tomcat.accesslog.prefix=tomcat
server.tomcat.accesslog.suffix=.log


效果很好。现在,我想使用AbstractAccessLogValve的conditionUnless属性,但是仅将server.tomcat.accesslog.conditionUnless无法使用。

我该如何设置?用代码执行此操作也很好,但是我不知道如何做到最好。还是应该使用其他方法配置阀门?

最佳答案

好了,查看Spring引导代码,可以看到AccessLogValve是按以下方式自定义的(在spring-boot-autoconfigure / src / main / java / org / springframework / boot / autoconfigure / web / ServerProperties.java中):

 831     private void customizeAccessLog(TomcatEmbeddedServletContainerFactory factory) {
 832       AccessLogValve valve = new AccessLogValve();
 833       valve.setPattern(this.accesslog.getPattern());
 834       valve.setDirectory(this.accesslog.getDirectory());
 835       valve.setPrefix(this.accesslog.getPrefix());
 836       valve.setSuffix(this.accesslog.getSuffix());
 837       factory.addContextValves(valve);
 838     }


因此,不支持conditionUnless。我想我只需要在自己的代码初始化中替换此阀,而不是使用application.properties文件即可。

09-11 21:30