← ClaudeAtlas

logging-guidelineslisted

Choose log levels and keep secrets and personal data out of logs. Use when adding or reviewing logging(ログ追加・ログレベルを決める・ログ設計).
devbasex/ai-plugins · ★ 1 · Code & Development · score 68
Install: claude install-skill devbasex/ai-plugins
# ログ運用ガイドライン コードにログを追加・修正する際は、以下のルールに従うこと。言語/フレームワークに依存しない原則として記述している。 ## ログレベルの選択基準 | レベル | 用途 | 本番出力(推奨) | |--------|------|---------------| | `error` | 例外発生、処理失敗 | o | | `warning` | データ不備でスキップ、処理継続可能な異常 | o | | `info` | バッチ開始/完了、重要なビジネスイベント | 環境による(本番off推奨) | | `debug` | 開発向けデバッグ情報 | x | **推奨**: 本番は `LOG_LEVEL=warning` 以上。info/debug は開発・ステージングのみで出力する。 ## 使用を避けるログレベル 以下は用途が曖昧または過剰なため、明示的な運用規則がない限り使わない: - `notice` — error/warning/info と区別が曖昧 - `critical`, `alert`, `emergency` — 通常のアプリには過剰。運用規則として「PagerDuty起動基準」などが定義されていない限り使わない ## ループ内ログのルール ### 原則: ループ内では info/warning を出力しない ループ内で1件ずつログを出力すると、大量データ処理時にログが爆発する。ループ後にサマリーとしてまとめて出力すること。 ### サマリーログ化パターン(擬似コード) ``` # NG: ループ内で1件ずつ出力 for item in items: log.info("処理完了", id=item.id) # OK: ループ後にまとめて出力 processed_count = 0 for item in items: # 処理... processed_count += 1 log.info("バッチ処理完了", processed_count=processed_count) ``` ### エラー蓄積パターン ループ内で例外が発生し処理を継続する場合は、エラー情報を蓄積してループ後にまとめて報告する。先頭N件のみ含めることで、ログサイズ爆発を防ぐ。 ``` errors = [] for item in items: try: process(item) except Exception as e: errors.append({"id": item.id, "error": str(e)}) if errors: log.error( "処理で一部失敗", total_count=len(items), failed_count=len(errors), sample_errors=errors[:10], # 先頭10件のみ ) ``` ### ループ内 debug も必要最小限 ループ内での debug 出力は、他に代替手段がなく調査に不可欠な場合のみ許容。デフォルトは「ループ外で件数サマリ」を基本とする。 ## 例外処理のルール 1. **例外は最上位でログ出力** — エントリポイント(コマンド/コントローラー/ジョブ)で catch してログ出力 2. **再スロー時はログ不要** — 上位で��