知識マップ: 自作ロガーの最小要件と結合テストチェックリスト
記事「自作ロガーの最小要件と結合テストチェックリスト」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
この記事は障害調査用の自作ロガーについて、UTF-8のJSON Linesを形式とし、logSessionIdとprocessIdを含む必須項目・single writerとbounded queueによる書き込み設計・flush条件・回転と保持・保存失敗時の明示的な通知までを最小要件として整理します。既製のMicrosoft.Extensions.Logging・Serilog・NLog・spdlogが使える場合はそちらが優先され、自作は依存を増やせないなどの制約があるときの選択肢です。logSessionIdを起動時刻とプロセスIDだけで作るとOSによるPIDの再利用で衝突しログが混ざるため、GUIDを足す設計が必要になります。最後に、実ファイル・実スレッド・実プロセスでの結合テストと行単位の機械検証によって、自作ロガーの信頼性を確認する方法を示します。
flowchart LR
accTitle: 自作ロガーの知識マップ
accDescr: 自作ロガーがJSON Lines・logSessionId・single writer・bounded queue・flush・回転保持をどう組み合わせるか、既製フレームワーク(ILogger・Serilog・NLog・spdlog)との使い分け、結合テストでの検証観点の関係を示す図
custom_logger["自作ロガー"]
logger_integration_test["ロガーの結合テスト"]
json_lines["JSON Lines"]
log_session_id["ログのsessionId"]
process_id_log_field["processId(ログ項目)"]
single_writer["single writer(単一書き込み口)"]
bounded_queue["bounded queue(上限付きキュー)"]
log_flush["flush(ログの同期書き出し)"]
log_rotation["ログの回転(ローテーション)"]
log_retention["ログの保持(リテンション)"]
one_process_one_file["1プロセス1ファイル"]
multi_process_shared_log_file["複数プロセスによる同一ログファイルへの追記"]
sessionid_collision["sessionIdの衝突"]
log_record_mixing["別々の起動のログレコードの混在"]
log_record_validation["ログレコードの機械検証"]
dotnet_ilogger["Microsoft.Extensions.Logging(ILogger)"]
diagnostic_app_log["障害調査用の診断ログ"]
serilog["Serilog"]
nlog["NLog"]
spdlog["spdlog"]
log_storage_failure_handling["保存失敗時の明示的な失敗通知"]
custom_logger -.->|"利用する"| json_lines
custom_logger -->|"前提とする"| log_session_id
custom_logger -->|"前提とする"| process_id_log_field
custom_logger -.->|"利用する"| single_writer
bounded_queue -->|"前提とする"| single_writer
custom_logger -.->|"利用する"| bounded_queue
custom_logger -.->|"利用する"| log_flush
custom_logger -.->|"利用する"| log_rotation
custom_logger -.->|"利用する"| log_retention
one_process_one_file -->|"推奨される対応"| custom_logger
multi_process_shared_log_file -->|"用いるのは非推奨"| custom_logger
log_session_id -.->|"防止する"| sessionid_collision
sessionid_collision -.->|"原因になり得る"| log_record_mixing
custom_logger -->|"で確認できる"| logger_integration_test
logger_integration_test -->|"利用する"| log_record_validation
dotnet_ilogger -->|"推奨される対応"| diagnostic_app_log
serilog -->|"推奨される対応"| diagnostic_app_log
nlog -->|"推奨される対応"| diagnostic_app_log
spdlog -->|"推奨される対応"| diagnostic_app_log
custom_logger -.->|"推奨される対応"| diagnostic_app_log
log_storage_failure_handling -->|"推奨される対応"| custom_logger
概念間の関係(全21件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- 自作ロガーはJSON Linesを利用します。
- 自作ロガーはログのsessionIdを前提とします。
- 自作ロガーはprocessId(ログ項目)を前提とします。
- 自作ロガーはsingle writer(単一書き込み口)を利用します。
- bounded queue(上限付きキュー)はsingle writer(単一書き込み口)を前提とします。
- 自作ロガーはbounded queue(上限付きキュー)を利用します。
- 自作ロガーはflush(ログの同期書き出し)を利用します。
- 自作ロガーはログの回転(ローテーション)を利用します。
- 自作ロガーはログの保持(リテンション)を利用します。
- 1プロセス1ファイルは自作ロガーに対する本記事の推奨です。
- 複数プロセスによる同一ログファイルへの追記を自作ロガーに用いることは推奨されません。
- ログのsessionIdはsessionIdの衝突を防ぎます。
- sessionIdの衝突は別々の起動のログレコードの混在の原因になることがあります。
- 自作ロガーはロガーの結合テストで確認できます。
- ロガーの結合テストはログレコードの機械検証を利用します。
- Microsoft.Extensions.Logging(ILogger)は障害調査用の診断ログに対する本記事の推奨です。
- Serilogは障害調査用の診断ログに対する本記事の推奨です。
- NLogは障害調査用の診断ログに対する本記事の推奨です。
- spdlogは障害調査用の診断ログに対する本記事の推奨です。
- 自作ロガーは障害調査用の診断ログに対する本記事の推奨です。
- 保存失敗時の明示的な失敗通知は自作ロガーに対する本記事の推奨です。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。