画面やAPIでTomcatのアクセスログを出力する

Spring Bootの標準構成ではEmbedded Tomcatで起動しているアプリケーションのアクセスログを標準出力に出すことができません。

アクセスログを標準出力に出せないと(ファイルにしか出せないと) The Twelve-Factor App に従うことができないため、 このページではアクセスログを標準出力に出す方法を説明します。

以下のサンプルコードの動作確認環境については、 動作確認環境と依存ライブラリについて を参照してください。

Tip

アクセスログが出力されないと、サーバ側の処理時間や返却するHTTPステータスコードが分からないため、アクセスログを出力するように構成することをおすすめします。

アクセスログを出力するための設定例

pom.xml

アクセスログを logback を使用してログ出力するライブラリを追加します。

<dependency>
  <groupId>dev.akkinoc.spring.boot</groupId>
  <artifactId>logback-access-spring-boot-starter</artifactId>
  <version>4.0.0</version>
</dependency>

Tip

ログのフォーマットの変更(例えば、ログの可視化用にLTSV形式への変更)などを行う場合には、 logback-access-spring-boot-starter を参考にしてください。

例えば、LTSVでログを出力する場合は下の内容をもつ logback-access.xmlを作成してsrc/main/resources配下に配置します。

<configuration>
  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>host:%h&#9;time:%t&#9;ident:%l&#9;user:%u&#9;method:%m&#9;uri:%U%q&#9;protocol:%H&#9;status:%s&#9;size:%B&#9;msec:%D&#9;thread:%I</pattern>
    </encoder>
  </appender>
  <appender-ref ref="CONSOLE" />
</configuration>

サンプル全体は tomcat-access-log-sample を参照してください。