spring - 如何在 spring boot 中的嵌入式 tomcat 中配置 conditionUnless?

标签 spring tomcat spring-boot

我正在使用带有嵌入式 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 boot 代码,它看到 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 文件。

关于spring - 如何在 spring boot 中的嵌入式 tomcat 中配置 conditionUnless?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37441202/

相关文章:

windows - 错误 : Tomcat 7 Configuration as Windows Service via tomcat7. 可执行文件

带有访问/刷新 token 的 Spring Boot OAuth2 SSO 未正确存储在数据库中

Spring 引导 : how to execute multiple test classes by just starting the service once using rest-assured

java - 如何使用 displaytag 传递隐藏变量

java - Tomcat 和 Spring MVC 中的缓存

java - Spring Boot 与 map 的宽松绑定(bind)是重复属性

java - 使用 SimpleMailMessage() 发送邮件时 Spring 中的 NullPointerException

java - Maven:将生成的 tomcat-maven-plugin 资源放在哪里?

tomcat - tomcat如何知道在哪里可以找到tnsnames.ora

docker - Springboot 客户端无法使用 Docker 容器 id 向 Eureka 注册