はじめに
このガイドでは、Spring BootアプリケーションにHTTPアクセスロギングを追加する方法を説明します。
前提条件
- Java 21以上
- Spring Boot 4.0以上
- TomcatまたはJetty組み込みサーバー
モジュール構成
このライブラリは2つのMavenアーティファクトで構成されています:
| アーティファクト | 説明 |
|---|---|
logback-access-spring-boot-starter | 自動設定とサーバー連携(Tomcat、Jetty、Security、TeeFilter) |
logback-access-spring-boot-starter-core | 公開APIクラス(推移的依存関係 — 個別に宣言不要) |
ほとんどのユーザーはスターター依存関係のみを宣言すれば十分です。coreモジュールは推移的依存関係として自動的に含まれます。
インストール
ビルドファイルに依存関係を追加します:
VERSIONをMaven 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>この設定は、Common Log Format(CLF)でアクセスログを出力します。
パターン変数
以下のパターン変数が使用可能です:
| 変数 | 説明 |
|---|---|
%h | リモートホスト(IPアドレス) |
%a | リモートIPアドレス |
%A | ローカルIPアドレス |
%p | ローカルポート |
%l | リモートログ名(常に-) |
%u | リモートユーザー(認証から取得) |
%t | リクエストタイムスタンプ |
%r | リクエストライン(メソッド、URI、プロトコル) |
%s | HTTPステータスコード |
%b | レスポンスボディサイズ(バイト) |
%D | リクエスト処理時間(ミリ秒) |
%T | リクエスト処理時間(秒) |
%I | スレッド名 |
%{xxx}i | リクエストヘッダーxxx |
%{xxx}o | レスポンスヘッダーxxx |
%{xxx}c | Cookie値xxx |
%{xxx}r | リクエスト属性xxx |
%queryString | クエリ文字列(?プレフィックス付き、例: ?name=value) |
%requestContent | リクエストボディ(TeeFilterが必要) |
%responseContent | レスポンスボディ(TeeFilterが必要) |
代替構文
ヘッダー、Cookie、属性パターンについては、%{name}iと%i{name}の両形式がサポートされています。本ドキュメントの例では%i{name}形式を使用しています。
Combined Log Format
ApacheのCombined Log Formatに近い詳細な出力:
xml
<pattern>%h %l %u [%t] "%r" %s %b "%i{Referer}" "%i{User-Agent}"</pattern>動作確認
- Spring Bootアプリケーションを起動
- 任意のエンドポイントにHTTPリクエストを送信
- コンソール出力でアクセスログを確認
出力例:
127.0.0.1 - - [01/Jan/2026:12:00:00 +0000] "GET /api/users HTTP/1.1" 200 1234