用途:配置 Nebula Logger 中日志记录在被删除或归档前的保留时长,并调度清理作业。
保留模型:每条 Log__c 都有 LogRetentionDate__c,到期后由 LogBatchPurger 判定可清理。该日期在插入时由 LoggerSettings__c.DefaultNumberOfDaysToRetainLogs__c(层级设置)决定,若日志场景匹配 LoggerScenarioRule__mdt 且启用覆盖,则用其 NumberOfDaysToRetainLogs__c(场景优先)。未配置天数时该字段为空,日志永不自动清理。
关键字段:DefaultNumberOfDaysToRetainLogs__c 为插入到可清理之间的天数,空表示不自动清理;DefaultLogPurgeAction__c 决定批处理动作,默认 Delete;IsEnabled__c 为总开关。LogPurgeAction__c 在插入时取自设置:Delete 会硬删除 Log__c 及其子 LogEntry__c,不进回收站;插件可提供额外动作,如 big-object-archiving 插件先复制到大对象再删除。
调度:LogBatchPurger 不会自动运行,需用 LogBatchPurgeScheduler 调度,例如: String cronExpression = '0 0 2 * * ?'; System.schedule('Nebula Logger - Daily Purge', cronExpression, new LogBatchPurgeScheduler()); 该类有无参构造和 LogBatchPurgeScheduler(Integer batchSize) 构造。未调度是最常见的“设了保留期但旧日志仍在”的原因。
按场景与层级:创建 LoggerScenarioRule__mdt,使 Scenario__c 匹配 Logger.setScenario(...),并设 IsEnabled__c=true、IsLogRetentionOverrideEnabled__c=true、NumberOfDaysToRetainLogs__c。LoggerSettings__c 为层级设置,可按用户或简档调整保留期,如开发者简档更长、集成用户更短。
验证:确认组织默认层 DefaultNumberOfDaysToRetainLogs__c 非空、LogBatchPurgeScheduler 已调度、新日志有 LogRetentionDate__c,可查询 SELECT Id, LogRetentionDate__c FROM Log__c ORDER BY CreatedDate DESC LIMIT 1。
限制:Log__c 与 LogEntry__c 占用自定义对象存储,LogEntry__c 通常是主要来源;更高的 LoggingLevel__c 会产生更多条目。存储紧张时可缩短保留期、提高生产日志级别或安装大对象归档插件。相关技能包括 nebula-logger-install、nebula-logger-best-practices、nebula-logger-plugin-development。