mcpField
N
nebula-logger-purging-and-retention

nebula-logger-purging-and-retention

github.com/jongpieデータ・データベース97483 回インストール9 週間前に更新
リポジトリ

nebula-logger-purging-and-retention について

Nebula Loggerの管理者向けに、ログの保持と削除方法を説明するガイドです。保持設定、削除ジョブのスケジュール、シナリオ・ユーザー・プロファイル別の上書きに加え、設定確認とストレージ管理も扱います。

主な機能

  1. 01組織・プロファイル・ユーザー単位の保持設定
  2. 02シナリオ別の保持期間上書き
  3. 03ログ削除アクションの設定
  4. 04一括削除ジョブのスケジュールと調整
  5. 05保持設定とログ日付の確認

活用シーン

  1. 01規制対象業務のログを長期間保持
  2. 02大量ログを出す連携ユーザーの保持期間短縮
  3. 03期限切れログが残る原因の調査
  4. 04Salesforceカスタムオブジェクトのストレージ管理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jongpie/nebulalogger --skill nebula-logger-purging-and-retention

インストール後、Claude Code で/nebula-logger-purging-and-retentionを入力して読み込まれたか確認します。

詳細

Nebula Logger のログ保持とパージ

保持モデル

すべての Log__c レコードには LogRetentionDate__c があります。この日付を過ぎると、ログは LogBatchPurger によるパージの対象になります。保持日は Log__c の挿入時に、次の情報を組み合わせて設定されます。

  • 有効な階層レコードの LoggerSettings__c.DefaultNumberOfDaysToRetainLogs__c。
  • オプションとして、ログのシナリオがシナリオルールに一致する場合は LoggerScenarioRule__mdt.NumberOfDaysToRetainLogs__c(シナリオ固有のオーバーライドが階層のデフォルトより優先されます)。

保持日数が設定されていない場合、LogRetentionDate__c は null のままとなり、ログは自動パージされません。

LoggerSettings__c の保持フィールド

LoggerSettings__c の保持関連の項目は階層カスタム設定であり、組織のデフォルト → プロファイル → ユーザーの順に値が引き継がれます。関連するフィールドは次のとおりです。

フィールド用途
DefaultNumberOfDaysToRetainLogs__cログの挿入からパージ対象になるまでの日数です。Null の場合、自動パージは行われません。
DefaultLogPurgeAction__c対象となるログをバッチジョブが処理するときの動作です。デフォルト値は Delete です。
IsEnabled__cマスタースイッチです。階層レベルでロギングを無効にすると、そのユーザーの新しい Log__c レコードの書き込みも停止します。

パージアクション

Log__c.LogPurgeAction__c(挿入時に LoggerSettings__c.DefaultLogPurgeAction__c から設定されます)は、ログの保持期限が切れたときに LogBatchPurger が実行する処理を指定します。

  • Delete(デフォルト):バッチジョブは Log__c とその子レコードである LogEntry__c を完全に削除します。これらはごみ箱に残りません。
  • プラグインが提供するアクション:Nebula Logger の一部のプラグインは、独自のパージアクションを追加します。たとえば、big-object-archiving プラグインは削除前にログを Big Object にコピーするため、データを長期にわたってクエリできます。このようなプラグインをインストールすると、そのパージアクションが LogPurgeAction__c の有効な値になります。

パージジョブのスケジュール設定

LogBatchPurger は自動実行されません。LogBatchPurgeScheduler を使ってスケジュールを設定してください。

// Run daily at 2am - adjust the cron expression for your org
String cronExpression = '0 0 2 * * ?';
System.schedule('Nebula Logger - Daily Purge', cronExpression, new LogBatchPurgeScheduler());

LogBatchPurgeScheduler には、デフォルトのバッチサイズを使用する引数なしコンストラクターと、処理量を調整するための LogBatchPurgeScheduler(Integer batchSize) コンストラクターがあります。

スケジュール済みジョブがなくても、新しいログには LogRetentionDate__c が正しく設定されますが、ログは一切パージされません。パージャーのスケジュールが設定されていないことは、「保持期間を 30 日に設定したのに、6 か月前のログがまだ残っている」という問題の最も一般的な原因です。

シナリオごとの保持期間

特定の業務プロセスのログをデフォルトより長く(または短く)保持するには、Scenario__c が Logger.setScenario(...) に渡される値と一致する LoggerScenarioRule__mdt レコードを作成します。次の値を設定してください。

  • IsEnabled__c = true(そうでない場合、ルールは機能しません)。
  • IsLogRetentionOverrideEnabled__c = true(保持期間のオーバーライドを実際に有効にするための設定です。このフラグがオフの場合、NumberOfDaysToRetainLogs__c の値は効果がありません)。
  • NumberOfDaysToRetainLogs__c = このシナリオに一致するログの目標保持日数。

階層設定を全体的に調整するのではなく、規制対象のプロセス(「財務監査ログを 7 年間保持する」)や、大量のログが発生するテストシナリオ(「integration-smoke-test のログを 24 時間後にパージする」)には、シナリオルールを使用してください。

ユーザーごと/プロファイルごとの保持

LoggerSettings__c は階層型カスタム設定なので、保持期間はユーザーまたはプロファイルごとに調整できます。一般的なパターンは次のとおりです。

  • デバッグユーザーの保持期間を長くする:開発者プロファイルの DefaultNumberOfDaysToRetainLogs__c を長めに設定し、調査作業に必要なログが失われないようにします。
  • 大量のログを生成する統合ユーザーの保持期間を短くする:統合ユーザープロファイルの保持期間を短めに設定し、(はるかに大量の)ログがストレージを圧迫しないようにします。

該当するプロファイルの LoggerSettings__c にプロファイルレベルの値を設定します。それ以外のユーザーには組織のデフォルト値が継承されます。

保持設定の確認

保持が機能していると判断する前に、対象の組織で次の3点を確認してください。

  1. 組織のデフォルトレベルの LoggerSettings__c で、DefaultNumberOfDaysToRetainLogs__c に null 以外の値が設定されている。
  2. LogBatchPurgeScheduler がスケジュールされている(Setup -> Scheduled Jobs で確認)。
  3. 新しい Log__c レコードに LogRetentionDate__c が設定されている。ログを簡単に記録して、SELECT Id, LogRetentionDate__c FROM Log__c ORDER BY CreatedDate DESC LIMIT 1 を実行してください。

この3点のうち1つでも欠けている場合、保持は実際には有効になっていません。

ストレージに関する考慮事項

  • Log__c と LogEntry__c はカスタムオブジェクトのストレージを消費します。通常、ログ1件あたり多数のエントリがあるため、容量を大きく左右するのは LogEntry__c です。
  • LoggerSettings__c.LoggingLevel__c の値(FINE、FINER、FINEST)を高くすると、エントリ数が大幅に増えます。環境に適したログレベルと保持期間を組み合わせて、ストレージの増加を抑えてください。詳しくは nebula-logger-best-practices を参照してください。
  • ストレージが実際に制約となる場合は、保持期間を短縮する、本番環境でログレベルのしきい値を引き上げる、または big-object-archiving プラグインをインストールして、古いデータをビッグオブジェクトにオフロードしてください。

関連スキル

コメント