✅ ログデモ
ログレベルの使い分け・パフォーマンス計測・機密情報マスキングを体験するデモ
📚 ログレベルの使い分け
| レベル | 用途 | 例 | 本番出力 |
|---|---|---|---|
| Debug | 開発時のデバッグ情報 | SQL実行・メソッド呼び出し | ❌ |
| Information | 重要な処理の記録 | ユーザー作成成功・API呼び出し | ✅ |
| Warning | 回復可能な問題・注意事象 | リトライ実行・遅延検出 | ✅ |
| Error | 例外・回復不可能なエラー | DB接続失敗・予期しない例外 | ✅ |
🧪 デモ 1: 全ログレベルを出力
ボタンを押すと Debug / Information / Warning / Error の4レベルをサーバーコンソールに出力します。
_logger.LogDebug("【Debug】SQL実行: SELECT * FROM Users...");
_logger.LogInformation("【Information】ユーザーが作成されました: UserId=123");
_logger.LogWarning("【Warning】レスポンスが遅延しています: 1500ms");
_logger.LogError("【Error】データベース接続に失敗しました");
🧪 デモ 2: パフォーマンス計測ログ
処理時間が 1000ms を超えると Warning、以下なら Information が出力されます。
if (elapsedMs > 1000)
_logger.LogWarning("Slow operation detected: {Name} took {ElapsedMs}ms", ...);
else
_logger.LogInformation("Operation completed: {Name} in {ElapsedMs}ms", ...);
🧪 デモ 3: 機密情報マスキング
password / apikey / token / secret を含む文字列は *** にマスクされてログ出力されます。
// NG: そのままログ出力(機密情報が漏れる)
_logger.LogInformation("Connecting with password=MySecret123");
// OK: マスキングしてからログ出力
var masked = LogMaskingHelper.Mask(input); // → "password=***"
_logger.LogInformation("接続情報: {Info}", masked);
🔗 参考リンク
- 📄 設計書: logging.md
- 📄 テスト設計書: logging-test.md
- 💻 ソースコード(Service): LoggingDemoService.cs
- 🧪 テストコード: LoggingDemoTests.cs