如何使用spring boot配置logback-access.xml

w7t8yxp5  于 2021-07-12  发布在  Java
关注(0)|答案(2)|浏览(591)

我的申请是:

  1. server:
  2. tomcat:
  3. accesslog:
  4. enabled: true
  5. basedir: my-tomcat

我们使用spring boot 1.4.3.release,我想用以下内容配置logback-access.xml(在src/main/resources下):

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <!-- always a good activate OnConsoleStatusListener -->
  4. <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
  5. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  6. <encoder>
  7. <pattern>%h %l %u %user %date "%r" %s %b</pattern>
  8. </encoder>
  9. </appender>
  10. <appender-ref ref="STDOUT" />
  11. </configuration>

我可以在我的tomcat文件夹下看到一个access_log.2017-01-03.log文件,其中包含正确的访问日志,但注意到在我的concole上,似乎没有读取配置文件logback-access.xml。
你知道吗?
埃里克

yi0zb3m4

yi0zb3m41#

是我弄错了,还是SpringBoot不支持这个功能?
资料来源:https://github.com/spring-projects/spring-boot/issues/2609:
嘿,我想让logback访问+tomcat和spring boot一起工作。有人能把它从盒子里拿出来吗?或者有必要设置管道吗?
...

  1. As a workaround, you can copy the access xml from the class path to the filesystem and run it there as part of your configuration class
  2. Files.copy(this.getClass().getResourceAsStream("/logback-access.xml"),Paths.get("log-access.xml"),StandardCopyOption.REPLACE_EXISTING);
  3. logbackValve.setFilename("log-access.xml");

解决方案

使用spring boot ext logback访问:
只需添加依赖项即可:

  1. <dependency>
  2. <groupId>net.rakugakibox.spring.boot</groupId>
  3. <artifactId>logback-access-spring-boot-starter</artifactId>
  4. <version>2.7.0</version>
  5. </dependency>

编辑-logback 1.1.6的其他解决方案+

关于上面提到的Spring Boot问题,有人发了这样的帖子:
由于logback 1.1.6,因此不需要任何解决方法来将logback访问配置文件作为资源加载。参考文献:http://jira.qos.ch/browse/logback-1069
你所要做的就是: logbackValve.setFilename("log-access.xml");

展开查看全部
4c8rllxm

4c8rllxm2#

虽然我来晚了,但我还是给后人发了一个简单的工作代码。
这个 logback 的访问日志可以通过以下步骤打印到控制台日志中:
添加 logback-access 附属国

  1. implementation group: 'ch.qos.logback', name: 'logback-access', version: '1.2.3'

注入 TomcatServletWebServerFactory 增加示例值 LogbackValve .

  1. @Bean
  2. public TomcatServletWebServerFactory servletContainer() {
  3. TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
  4. tomcat.addContextValves(new LogbackValve());
  5. return tomcat;
  6. }

添加以下内容 logback-access.xml 进入类路径 resources\conf 目录。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  4. <encoder>
  5. <Pattern>combined</Pattern>
  6. <Pattern>[ACCESS] %h %l %u %t{yyyy-MM-dd HH:mm:ss.SSS} %s %b %D ms</Pattern>
  7. </encoder>
  8. </appender>
  9. <appender-ref ref="STDOUT" />
  10. </configuration>

访问日志将在控制台中打印为

  1. "[ACCESS] <host> <date> "<httpmethod> <httpuri> HTTP/1.1" <httpstatus> "<timetaken in millisecond> ms""
展开查看全部

相关问题