R e i - D r e a m
for Laravel
Guest
login

最終投稿日:2026年08月23日

【検証環境】- Windows11 - JDK 17-LTS - Eclipse 2024-09 R - Wildfly 28.0.1

目次

脇役だけどとても大事な機能たち

ログの出力

システムと言えばそう、ログですよね。
ログは全ての機能に対しての『目印』になる重要な役割があるので適切な設定を心がけましょう。
今回は『SLF4J』を使用したログの設定方法を解説します。
○ pom.xml
まずは依存関係を整えましょう。
pom.xml

<!-- Logback (SLF4J の実装ライブラリ) -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.4.14</version>
</dependency>

    ※バージョンは自身の環境に合わせて下さい(Java 11/17以降なら[1.4.14]で問題ありません)
○ ログ実装
それではバッキングビーンの初期化処理にログを設定してみます。
SampleBean.java

package view;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import jakarta.faces.view.ViewScoped;
import jakarta.inject.Named;
import dto.SampleDto;
import jakarta.inject.Inject;
import lombok.Getter;

@Named
@ViewScoped
public class SampleBean extends BaseBean {
    private static final long serialVersionUID = 1L;

    private static final Logger logger = LoggerFactory.getLogger(SampleBean.class);
    
    @Inject
    @Getter
    private SampleDto dto;
    
    @Override
    protected void initialize() {

        logger.info("処理を開始します。");
        logger.info("{}を{}します。", "hoge", "foo");
        dto.setName("");
        dto.setMemo("");
    }
    
    public String submit() {
        return SELF;
    }
}

    ※ グレーの部分でエラーになる場合は削除して問題ありません(要は[xhtml]側と整合性がとれていれば良いです)
『getLogger(SampleBean.class)』の様に、自身のクラス名を引数として設定します。
ログ出力設定は、普通に文字列を設定します。
また『{}』を使って、プレースホルダ設定も可能です。
ポイント

『@Inject』を使って『Logger』クラスを注入する方法もありますが、当然静的クラスでは使えません。
記述の統一性の観点からも、こちらの設定をお勧めします。

また、サンプルのバッキングビーンは『BaseBean』を継承しています。
これ一瞬『[protected]にしてBaseBeanにロガーを設定すれば良いのでは?』と思いますよね。
ただしこの設定にしてしまうと、以下の様に発火したクラスが全て『BaseBean』となってしまいます。
    08:32:06,058 INFO [view.BaseBean] (default task-1) 処理を開始します。
ログの意味は、システム監視にあるので、視認性を担保するためにも『private』設定にしましょう。

ログの種類と深度設定

以下はログ深度の浅い順に並べたログ設定となります
trace            最詳細ログ
debug          開発・デバッグ用
info               通常運用ログ
warn            警告
error            エラー・障害発生
※まぁ基本的には『trace』は使わないかな。
実際にログを確認しようとすると『trace』『debug』が出力されません。
実はデフォルトの設定で、ログは『info』以上となっています。
しかも、この設定は『Wildfly』側にあります。
『Wildfly』側の設定を弄るのは『好手』ではありませんので、アプリ側からログの制御を無効にします。
以下ファイルを作成します。
『webapp/WEB-INF/jboss-deployment-structure.xml』
jboss-deployment-structure.xml

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <!-- WildFly のログサブシステムによる自動統合を無効化する -->
        <exclude-subsystems>
            <subsystem name="logging" />
        </exclude-subsystems>
    </deployment>
</jboss-deployment-structure>

これで『Wildfly』はログに関して無視します。
が、今度はログが一切出力されなくなるため、アプリ側にファイルを新規作成し、ログの出力設定を記述します。
src/main/resources/logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- コンソール(画面)に書き出す設定 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 日付ごとにローテーションするファイル出力の設定 -->
    <appender name="DAILY_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 現在書き込み中のログファイルパス -->
        <file>standalone/log/server.log</file>
        <!-- ローテーション(世代管理)のポリシー設定 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 過去ログのファイル名パターン(日毎にアーカイブ化される) -->
            <fileNamePattern>standalone/log/server.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- ログファイルを保持する日数(例: 30日分保管) -->
            <maxHistory>30</maxHistory>
            <!-- 保持するログファイルの総容量制限(オプション: 例 3GB) -->
            <totalSizeCap>3GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <!-- 出力レベルとアペンダーの関連付け -->
    <root level="DEBUG">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="DAILY_FILE" />
    </root>
</configuration>

ログの設定は大きく分けて『コンソール出力』『ログファイル出力』『出力ログレベル初期値』設定となります
○ コンソール出力
エクリプスのコンソールに出力される内容を設定します。
特に気にする必要はないかと。
○ ログファイル出力
・fileタグ                                  ルートパスはエクリプスに設定したWildflyのディレクトリとなります。
                                                         ※本解説では[wildfly-28.0.1.Final]で設定しています
・fileNamePatternタグ       ファイル名のパターンを設定します。
・maxHistoryタグ                 ログファイルを保持する日数です。
・totalSizeCapタグ               ログファイルの容量制限です。
・encoderタグ                        文字コード設定です。
○ 出力ログレベル初期値
ここでは『DEBUG』に設定しました。
またここで、アペンダーの関連付け設定もします。
レンズモード 【新規購入限定用】
ログインしてコメントを残そう!!


きっぷる