Skip to content

はじめに

このガイドでは、Spring BootアプリケーションにHTTPアクセスログを追加する手順を説明します。

前提条件

  • Java 21以上
  • Spring Boot 4.0以上
  • 組み込みサーバーとしてTomcatまたはJetty

モジュール構成

このライブラリは2つのMavenアーティファクトとして公開されています。

アーティファクト説明
logback-access-spring-boot-starter自動設定とサーバー連携(Tomcat、Jetty、Spring Security、TeeFilter)。
logback-access-spring-boot-starter-core公開APIとデータモデル。推移的依存関係として取り込まれる。APIを拡張する場合のみ明示的に宣言する。

通常はスターターのみを依存関係として宣言します。coreモジュールは推移的に取り込まれます。

インストール

ビルドファイルに依存関係を追加します:

VERSIONMaven Centralの最新バージョンに置き換えてください。

kotlin
implementation("io.github.seijikohara:logback-access-spring-boot-starter:VERSION")
groovy
implementation 'io.github.seijikohara:logback-access-spring-boot-starter:VERSION'
xml
<dependency>
    <groupId>io.github.seijikohara</groupId>
    <artifactId>logback-access-spring-boot-starter</artifactId>
    <version>VERSION</version>
</dependency>

基本設定

src/main/resources/logback-access.xmlを作成します。

xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%h %l %u [%t] "%r" %s %b</pattern>
        </encoder>
    </appender>
    <appender-ref ref="console"/>
</configuration>

このパターンはNCSA Common Log Format(CLF)に相当します。スターターはこのファイルを自動的に読み込みます。全体の探索順序は設定ファイルの解決を参照してください。

パターン変数

パターンで使用可能な変換ワードは以下のとおりです。

変数説明
%hリモートホスト。Jettyでは常にIPアドレス(逆引きDNSルックアップは行わない)。
%aリモートIPアドレス。
%AローカルIPアドレス。
%pローカルポート。クライアントが指定したポートとローカルインターフェースのポートの切り替えはlocal-port-strategyで行う。
%lリモートログ名。常に-
%u認証済みユーザー名。匿名リクエストでは-。Spring Securityを使用したServletアプリケーションが必要。
%tリクエストタイムスタンプ。
%rリクエストライン: メソッド、URI(クエリ文字列含む)、プロトコル。
%sHTTPステータスコード。
%bレスポンスボディサイズ(バイト)。
%Dリクエスト処理時間(ミリ秒)。
%Tリクエスト処理時間(秒)。
%Iリクエストを処理したスレッド名。
%{name}iリクエストヘッダーnameの値。
%{name}oレスポンスヘッダーnameの値。
%{name}cCookie nameの値。
%{name}rリクエスト属性nameの値。
%queryString?を含むクエリ文字列。クエリがない場合は空。
%requestContentリクエストボディ。TeeFilterが有効な場合のみ出力(Tomcat限定)。
%responseContentレスポンスボディ。TeeFilterが有効な場合のみ出力(Tomcat限定)。

代替構文

リクエスト/レスポンスヘッダー、Cookie、属性の変換ワードは%{name}i形式と%i{name}形式の両方を受け付けます。本ドキュメントでは%{name}i形式で統一しています。

Combined Log Format

ApacheのCombined Log Formatに対応するには、RefererUser-Agentヘッダーを追加します。

xml
<pattern>%h %l %u [%t] "%r" %s %b "%{Referer}i" "%{User-Agent}i"</pattern>

動作確認

  1. Spring Bootアプリケーションを起動する。
  2. 任意のエンドポイントにHTTPリクエストを送信する。
  3. コンソールにアクセスログが出力されることを確認する。

出力例:

127.0.0.1 - - [01/Jan/2026:12:00:00 +0000] "GET /api/users HTTP/1.1" 200 1234

次のステップ

  • 設定リファレンス — 全アプリケーションプロパティとXML設定。
  • Tomcat連携 — Tomcat固有の動作とリバースプロキシ設定。
  • Jetty連携 — Jetty固有の動作と既知の制限事項。
  • 高度な設定 — TeeFilter、URLフィルタリング、JSONロギング、Spring Security。

Released under the Apache 2.0 License.