はじめに
Java を学習していると、必ずと言っていいほど目にするのが
ロギングフレームワーク です。
- なぜ
System.out.printlnではダメなのか - SLF4J って何をしているのか
- ログはどこまで書けばいいのか
こうした疑問を持つ人はとても多いです。
実は、ログの書き方を見ると
その人が現場を知っているかどうか がすぐに分かります。
この記事では、Java 初心者でも理解できるように
SLF4J を中心としたロギングフレームワークの活用術 をやさしく解説します。
ロギングとは何か
ロギングとは
プログラムの動きを記録として残すこと です。
ログがあることで
- エラーの原因が分かる
- 処理の流れを追える
- 本番環境のトラブルに対応できる
ようになります。
Java の業務システムでは
ログが読めない=原因が分からない=直せない
ということも珍しくありません。
なぜ System.out.println ではダメなのか
初心者の頃は、ついこう書いてしまいます。
|
1 2 |
System.out.println("ここを通った"); |
ですが、現場ではほぼ使われません。
理由は
- 出力レベルを制御できない
- 本番と開発で切り替えられない
- ログとして管理できない
からです。
Java では
ログは仕組みとして管理するもの
という考え方が基本です。
SLF4Jとは何か
SLF4J は
ログ出力の窓口(インタフェース) です。
ここがとても重要です。
SLF4J 自体は
- ファイルに書く
- コンソールに出す
といった処理はしません。
「ログを出したい」という要求を
裏側の実装に渡す役割 を持っています。
なぜ SLF4J が使われるのか
Java には複数のロギング実装があります。
- JDK 標準のログ
- Logback
- Log4j 系
もし直接それらを使ってしまうと
後から変更するのが大変です。
SLF4J を使えば
実装を後から差し替えてもコードはそのまま
という大きなメリットがあります。
これは
長く使われる Java の業務システムにとって非常に重要
なポイントです。
ログレベルを正しく使い分ける
ロギングで一番大切なのが
ログレベルの使い分け です。
主に使われるのは次の考え方です。
- DEBUG:開発者向けの詳細情報
- INFO:正常な処理の記録
- WARN:注意が必要な状態
- ERROR:明確なエラー
「とりあえず全部 INFO」
という書き方は評価されません。
読む人を意識したログ を書くことが重要です。
SLF4Jの基本的な書き方
Java では、次の形が定番です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class SampleService { private static final Logger log = LoggerFactory.getLogger(SampleService.class); public void execute(String userId) { log.info("処理を開始しました"); log.debug("userIdは {} です", userId); } } |
この書き方は
- 可読性が高い
- パフォーマンスに配慮されている
という点で、現場でよく使われます。
プレースホルダーを使う理由
ログを書くときに、
文字列を自分で結合するのは避けましょう。
|
1 2 |
log.debug("userId=" + userId); |
よりも、次の書き方が正解です。
|
1 2 |
log.debug("userIdは {} です", userId); |
理由は
- ログが出ない場合、文字列が作られない
- 無駄な処理を減らせる
からです。
このあたりを意識できると
Java に慣れている印象 を持たれます。
実装は Logback がよく使われる
SLF4J と組み合わせる実装として、
多くの現場で使われているのが Logback です。
理由は
- 設定が分かりやすい
- 安定している
- Java との相性が良い
といった点です。
Java の強みである
安定性・保守性 を活かしやすい選択です。
環境ごとにログを切り替える
ログは
- 開発
- テスト
- 本番
ですべて同じである必要はありません。
開発中は詳細なログが欲しいですが、
本番では最低限で十分です。
ログ設定を分けることで
- ディスクを圧迫しない
- 本当に必要な情報が見える
ようになります。
ログに書いてはいけないもの
とても重要な注意点です。
ログには
- パスワード
- 個人情報
- 機密情報
を書いてはいけません。
ログは
- 多くの人が見る
- 長期間残る
という性質があるため、
セキュリティ意識が強く求められます。
良いログは設計の一部
ログは
「とりあえず出すもの」
ではありません。
- どこで
- 何が起きたか
- その後どうなったか
が分かるログは
設計がきちんとしている証拠 です。
Java の現場では
ログ設計ができる人は
とても重宝されます。
Javaプログラマーを目指す人へ
ロギングフレームワークを正しく使えることは、
単なる知識ではありません。
- 保守性を考える力
- 運用を意識する視点
- チーム開発の感覚
が身についている証拠です。
これは
Java が強いと言われる理由そのもの
でもあります。
まずは自己学習から
Java の基礎から
「なぜそう書くのか」
を理解したい人は、
絶対にJavaプログラマーになりたい人へ。
を読んで自己学習するのがおすすめです。
考え方を身につけるのに向いています。
実務や転職を考えているなら
- ログの書き方に自信がない
- コードレビューを受けたい
- Java プログラマーとして転職したい
そんな人には サイゼントアカデミー がおすすめです。
👉 https://academy.cyzennt.co.jp
現場視点のレビューで
「通用する Java スキル」を身につけられます。
まとめ
Java のロギングフレームワークは
- SLF4J を窓口に使う
- ログレベルを意識する
- 運用まで考えて設計する
ことが大切です。
ログを制する人は
Java の現場を制する人 です。
今日から
「読まれるログ」を意識して
コードを書いていきましょう。

コメント