Skip to content

はじめに

このガイドでは、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モジュールは推移的依存関係として自動的に含まれます。

インストール

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

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/resourceslogback-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、プロトコル)
%sHTTPステータスコード
%bレスポンスボディサイズ(バイト)
%Dリクエスト処理時間(ミリ秒)
%Tリクエスト処理時間(秒)
%Iスレッド名
%{xxx}iリクエストヘッダーxxx
%{xxx}oレスポンスヘッダーxxx
%{xxx}cCookie値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>

動作確認

  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

次のステップ

Released under the Apache 2.0 License.