一尘不染

如何在spring-boot中配置tomcat访问日志的位置和名称?

spring-boot

我在application.yml中有一个具有以下配置的spring-boot应用程序

server:
contextPath: /rti
tomcat:
    access-log-enabled: true
    access-log-pattern: "%h %l %u %t \"%r\" %s %b %D"
    basedir: tomcat

这会提示创建访问日志tomcat / logs / access_log.2015-02-12.txt。

我希望能够配置访问日志的创建位置和名称。但是经过大量搜索之后,我开始认为这是不可能的。有谁知道如何实现这一目标?

使用logback.xml中的logback和配置,应用程序日志运行良好


阅读 487

收藏
2020-05-30

共1个答案

一尘不染

您可以使用EmbeddedServletContainerCustomizer接口将完全自定义的阀门添加到嵌入式tomcat。这对我有用:

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter implements EmbeddedServletContainerCustomizer {

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {
        if (container instanceof TomcatEmbeddedServletContainerFactory) {
            TomcatEmbeddedServletContainerFactory factory = (TomcatEmbeddedServletContainerFactory) container;
            AccessLogValve accessLogValve = new AccessLogValve();
            accessLogValve.setDirectory("/var/log/test");
            accessLogValve.setPattern("common");
            accessLogValve.setSuffix(".log");
            factory.addContextValves(accessLogValve);
        } else {
            logger.error("WARNING! this customizer does not support your configured container");
        }
    }

}
2020-05-30