nebula-logger-purging-and-retention について
Nebula Loggerの管理者向けに、ログの保持と削除方法を説明するガイドです。保持設定、削除ジョブのスケジュール、シナリオ・ユーザー・プロファイル別の上書きに加え、設定確認とストレージ管理も扱います。
主な機能
- 01組織・プロファイル・ユーザー単位の保持設定
- 02シナリオ別の保持期間上書き
- 03ログ削除アクションの設定
- 04一括削除ジョブのスケジュールと調整
- 05保持設定とログ日付の確認
活用シーン
- 01規制対象業務のログを長期間保持
- 02大量ログを出す連携ユーザーの保持期間短縮
- 03期限切れログが残る原因の調査
- 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点を確認してください。
- 組織のデフォルトレベルの
LoggerSettings__cで、DefaultNumberOfDaysToRetainLogs__cに null 以外の値が設定されている。 LogBatchPurgeSchedulerがスケジュールされている(Setup -> Scheduled Jobs で確認)。- 新しい
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プラグインをインストールして、古いデータをビッグオブジェクトにオフロードしてください。
関連スキル
- nebula-logger-install -
LoggerSettings__cの初期設定。 - nebula-logger-best-practices - 保持期間と組み合わせる、環境に応じたログレベルの設定。
- nebula-logger-plugin-development - カスタム削除アクションプラグインの作成(例:外部システムへのアーカイブ)。