web-dev-qa-db-ja.com

SpringBootでlogback-access.xmlを設定する方法

私のapplication.ymlは:

server:
  Tomcat:
    accesslog:
      enabled: true
    basedir: my-Tomcat

Spring Boot 1.4.3.RELEASEを使用しており、logback-access.xml(src/main/resourcesの下)を次の内容で構成したいと思います。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!-- always a good activate OnConsoleStatusListener -->
  <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%h %l %u %user %date "%r" %s %b</pattern>
    </encoder>
  </appender>

  <appender-ref ref="STDOUT" />
</configuration>

My-Tomcatフォルダーの下にaccess_log.2017-01-03.logファイルがあり、正しいアクセスログが表示されていますが、コンコールに注目すると、構成ファイルlogback-access.xmlが読み取られていないようです。

何か案が ?

エリック

8
Eric Reboisson

私は間違っていますか、それともこれはSpring Bootによってネイティブにサポートされていませんか?

ソース: https://github.com/spring-projects/spring-boot/issues/2609

ねえ、私はログバックアクセス+ TomcatをSpringBootで動作させようとしています。誰かがこれをすぐに使えるようにすることができましたか?または、セットアップに必要な配管はありますか?

.。

_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

Files.copy(this.getClass().getResourceAsStream("/logback-access.xml"),Paths.get("log-access.xml"),StandardCopyOption.REPLACE_EXISTING);
logbackValve.setFilename("log-access.xml");
_

解決

使用 spring-boot-ext-logback-access

依存関係を追加するだけで、次のようになります。

_<dependency>
    <groupId>net.rakugakibox.spring.boot</groupId>
    <artifactId>logback-access-spring-boot-starter</artifactId>
    <version>2.7.0</version>
</dependency>
_

編集-ログバック1.1.6+の他のソリューション

上記のspring-bootの問題 について、誰かがこれを投稿しました:

Logback 1.1.6以降、logback-access構成ファイルをリソースとしてロードするための回避策は必要ありません。参照: http://jira.qos.ch/browse/LOGBACK-1069

あなたがしなければならないのは:logbackValve.setFilename("log-access.xml");

3
alexbt