💻
Java × Logback でログを出力する基本設定
Javaでの開発において、ログ出力はデバッグや運用の強力な味方です。本記事では、ロギングライブラリ「Logback」を使って、ログをコンソールに出力する基本的な方法を紹介します。
💡 Logbackとは?
Logback
は、Javaで広く使われているロギングフレームワークであり、SLF4J(Simple Logging Facade for Java)と連携して利用されます。構成ファイルは logback.xml
で記述し、きめ細やかなログ設定が可能です。
📁 プロジェクト構成
my-java-app/
├── src/
│ └── main/
│ └── resources/
│ └── logback.xml ← ログ設定ファイル
├── pom.xml(または build.gradle)
└── ...
⚙️ logback.xml の内容
以下は src/main/resources/logback.xml
の設定例です。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<configuration>
<timestamp key="timestamp" datePattern="yyyyMMdd'-'HHmmss"/>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d [%thread] %-5level [%X{X-HT-TRANSACTION-ID}] %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 個別のロガー設定 -->
<logger name="org.seasar.doma" level="debug"/>
<logger name="org.springframework" level="info"/>
<logger name="package" level="debug"/>
<!-- デフォルト設定(全体適用) -->
<root level="info">
<appender-ref ref="stdout" />
</root>
</configuration>
🧾 この設定が意味すること
要素 | 説明 |
---|---|
appender stdout |
ログの出力先をコンソールに指定。 |
%d |
日時を出力。 |
%thread |
スレッド名を出力。 |
%level |
ログレベル(INFOなど)を出力。 |
%X{X-HT-TRANSACTION-ID} |
トランザクションID(MDC使用時)を表示。 |
%logger{36} |
ロガー名(パッケージ+クラス名)を最大36文字で表示。 |
%msg |
ログメッセージ本体。 |
🔍 ロガーごとのログレベル指定の意味
<logger name="org.seasar.doma" level="debug"/>
→ Doma(DBマッパー)の詳細なSQLログを出力します。
<logger name="org.springframework" level="info"/>
→ SpringフレームワークのログはINFO以上(起動情報など)を出力。
<logger name="package" level="debug"/>
→ package.~
で始まる自作コードのログを DEBUG レベルで出力。
例:package.service.UserService
など
<root level="info">...</root>
→ 明示されていないすべてのロガーに対して INFOレベル以上を出力。
💬 ログ出力の例(コード)
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Sample {
private static final Logger logger = LoggerFactory.getLogger(Sample.class);
public static void main(String[] args) {
logger.debug("デバッグログ");
logger.info("情報ログ");
logger.warn("警告ログ");
logger.error("エラーログ");
}
}
このクラスが package.Sample
に属している場合:
- DEBUG ログは出力される(
logger name="package"
により) - それ以外のログもすべて出力される(INFO 以上)
🖨️ 実行時の出力例(コンソール)
2025-05-14 10:00:00 [main] DEBUG [ ] Sample - デバッグログ
2025-05-14 10:00:00 [main] INFO [ ] Sample - 情報ログ
2025-05-14 10:00:00 [main] WARN [ ] Sample - 警告ログ
2025-05-14 10:00:00 [main] ERROR [ ] Sample - エラーログ
-
[%X{X-HT-TRANSACTION-ID}]
は MDC に値を設定しないと空白になります。
🚀 まとめ
- Logbackを使えば、出力先やフォーマット、ログレベルを柔軟に設定できます。
- パッケージ名ごとにログレベルを制御すれば、必要な情報だけをログに出力できます。
- 運用では
root
はINFO
本番向け、自作コードや開発時にはDEBUG
にしておくと便利です。
Discussion