Spatie Laravel ActivityLog:按增删改操作差异化记录日志
差异化配置Activitylog日志记录规则
可以通过LogOptions提供的setLogOptionsCallback回调方法,根据当前操作的事件类型(新增created、更新updated、删除deleted)动态调整日志记录规则,代码示例如下:
public function getActivitylogOptions(): LogOptions { return LogOptions::defaults() ->logOnlyDirty() ->setLogOptionsCallback(function (LogOptions $options, string $eventName) { match($eventName) { 'created' => $options->logOnly(['name', 'email']), // 新增时仅记录指定字段 'updated' => $options->logAll(), // 更新时记录所有修改过的字段(logOnlyDirty已生效) 'deleted' => $options->logOnly(['id', 'name']), // 删除时按需记录字段 }; return $options; }); }
说明
setLogOptionsCallback会在日志写入前触发,传入当前的LogOptions实例和事件名称- 新增操作通过
logOnly指定需要记录的字段,避免记录全部数据 - 更新操作保留
logAll()配合logOnlyDirty(),确保只记录实际被修改的字段 - 删除操作可根据业务需求自定义要留存的关键字段
内容的提问来源于stack exchange,提问作者Phyron
相关产品推荐
相关产品推荐

