用途:在 Salesforce 团队中审查、加固并标准化 Nebula Logger 的使用,适用于代码评审和日志规范设计。
主要能力与建议: 日志级别:ERROR、WARN、INFO 仅用于运维上重要的信息;DEBUG、FINE、FINER、FINEST 用于高频诊断细节,可留在代码中,生产环境不产生运行时开销,需要时再开启。 按环境调整 LoggerSettings__c:生产环境将 LoggingLevel__c 设为 ERROR、WARN 或 INFO 以减少噪音;调试时改为 DEBUG、FINE、FINER 或 FINEST。配置 DefaultLogPurgeAction__c 与 DefaultNumberOfDaysToRetainLogs__c 管理清理与保留窗口。 分组:使用静态方法 Logger.setScenario(),以及实例方法 LogEntryEventBuilder.addTag() 和 addTags() 按业务流程分组,并定义团队统一的场景与标签命名约定。 数据丰富:优先用 LogEntryEventBuilder 的实例方法而非在消息字符串中拼接数据,包括 setExceptionDetails、setApprovalResult、setDatabaseResult、setRecord、setHttpRequestDetails、setHttpResponseDetails、setRestRequestDetails、setRestResponseDetails、setField。 保存策略:Logger.info()/.error() 等只写入内存缓冲区,不调用 saveLog() 则事务结束时全部丢失。saveLog() 是真实平台操作:默认 EVENT_BUS 每次调用执行一次 System.EventBus.publish,消耗 getLimitPublishImmediateDML()(每事务 100)及组织每日平台事件配额;QUEUEABLE 消耗异步任务槽,REST 消耗 callout,SYNCHRONOUS_DML 消耗 DML 行与语句。可在批处理分块后、长循环外层迭代结束时、异步交接前、捕获并重抛异常的 finally 块中保存中间状态;但不要每条日志后都调用,也不要在遍历记录的最内层循环中调用。事务性代码路径应在 finally 中调用 saveLog(),必要时在方法顶部用 Logger.setSaveMethod() 指定保存方式。 环境基线:生产 ERROR 或 WARN,UAT 用 INFO,QA 用 DEBUG 或 FINE,沙箱/开发用 FINE 至 FINEST(限时);可用用户/简档层级覆盖应对临时事件窗口,之后恢复。 评审清单:每条执行路径是否在有意设置的检查点调用 saveLog();异常是否带堆栈上下文;记录引用是否通过 setRecord 附加;场景与标签是否符合团队分类;非默认保存方式是否显式指定。 限制与注意事项:日志仍受 Salesforce Governor 限制影响,需关注数据存储、平台事件每日限额、SOQL 查询、CPU 时间、异步任务分配和堆大小;避免在日志中存储机密、凭据或不必要的 PII;日志不能替代清晰的领域设计。
使用方式与适用场景:作为团队代码评审与日志治理的参考规范,用于统一日志级别、分组、保存与保留策略。具体安装命令与配置细节资料未提供。