4.5. ロギング
4.5.1. ロギングフレームワーク
- SLF4J + Logback を使用します。(Spring Boot 標準提供)
System.out.println()をロギング目的で使用しません。
4.5.2. ログレベルポリシー
| レベル | 使用基準 |
|---|---|
ERROR | 即時対応が必要なシステム障害 |
WARN | 潜在的な問題、異常だがサービス運用は可能 |
INFO | 主要なビジネスイベント、アプリケーション状態の変更 |
DEBUG | 開発中のデバッグ情報(プロダクションでは無効化) |
TRACE | 詳細なフロー追跡(プロダクションでは無効化) |
4.5.3. ログ記述規則
- ロガーはクラスごとに宣言します。
java
private static final Logger log = LoggerFactory.getLogger(UserService.class);- または Lombok
@Slf4jアノテーションを使用します。 - ログメッセージにはパラメータバインディングを使用します。
java
// 悪い例
log.info("ユーザー作成: " + userId);
// 良い例
log.info("ユーザー作成: userId={}", userId);- 例外ロギング時にはスタックトレースを含めます。
java
log.error("ユーザー検索失敗: userId={}", userId, exception);4.5.4. プロダクションログフォーマット
xml
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>