Skip to content

外部連携ログ ― ログがなかったら障害対応は?

📖この章のキーワード
用語意味なぜ重要か
ログチャネルドメイン別にログ出力先を分ける仕組み障害調査を高速化
構造化ログキーと値の組み合わせで記録するログ形式機械的な検索・集計が容易
可観測性(Observability)システムの内部状態を外から把握できる度合いログ・メトリクス・トレースの3本柱

Phase 1: 観察

exemplar ドメイン別のログチャネル設計です。

LIBOT のログ設定:

php
// config/logging.php(一部抜粋)
// Label: exemplar

'channels' => [
    'webhook'       => ['driver' => 'daily', 'path' => storage_path('logs/webhook/webhook.log')],
    'webhook_error' => ['driver' => 'daily', 'path' => storage_path('logs/webhook/error.log')],

    'partner'       => ['driver' => 'daily', 'path' => storage_path('logs/partner/partner.log')],
    'partner_error' => ['driver' => 'daily', 'path' => storage_path('logs/partner/error.log')],

    'line'          => ['driver' => 'daily', 'path' => storage_path('logs/line.log')],
    'billing'       => ['driver' => 'daily', 'path' => storage_path('logs/billing/billing.log')],
    'billing_error' => ['driver' => 'daily', 'path' => storage_path('logs/billing/error.log')],

    'beacon'        => ['driver' => 'daily', 'path' => storage_path('logs/beacon/beacon.log')],
    // ... 11チャネル以上
],

使い方:

php
Log::channel('partner')->info('External event accepted', ['operation_id' => $id]);
Log::channel('partner_error')->error('Signature verification failed', ['key_id' => $keyId]);

Phase 2: 判断

AI禁止ゾーン
  • 全てのログを 1 つのファイル に出力していたら、障害調査はどうなりますか?
  • 正常系ログ(partner)とエラーログ(partner_error)を 分けるメリット は何ですか?
  • ログの 保持期間 はどう決めるべきですか?

AIに聞く前に、自分の頭で考えてみましょう。

テキストを入力すると有効になります