Laravel Activity Log操作日志扩展包

Laravel Activity Log操作日志扩展包

简介

Laravel Action Logs操作日志记录Laravel Activity Log

很多数据管理员都想记录他们用户的所有活跃记录。这个包可以很方便的记录你的用户何时何地的创建、更新实体的记录。外加,现在这个包还可以记录多个版本的实体间数据的变更。
优势

  1. 简单的实体实现
  2. 记录所有创建、更新实体的用户和次数
  3. 支持记录自定义信息(登录、登出等)

福利彩蛋:没有好玩的 API 接口?上百款免费接口等你来,免费 API,免费 API 大全

安装

安装组件

php 复制代码
composer require spatie/laravel-activitylog

发布配置文件

php 复制代码
php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="config"

数据迁移文件

php 复制代码
php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="migrations"

数据迁移

php 复制代码
php artisan migrate

.env配置数据库连接

新版本添加了日志数据库连接配置,如有需要可以自定义连接,否则会适用系统默认的数据库连接

php 复制代码
ACTIVITY_LOGGER_DB_CONNECTION=connection

用法

基础用法

扩展基本使用,直接在想记录日志的地方条用改方法,比如登录成功或失败的时候需要记录下登录日志

php 复制代码
activity()->log('Look mum, I logged something');

可以使用performedOn方法设置日志是在哪个对象上执行的操作(例如Users Model)

php 复制代码
activity()
   ->performedOn(new User())
   ->log('edited');

你可以通过使用causedBy来设置谁或者什么原因触发了这个活动:这里的model和conentModel没有必然的联系, m o d e l 可以是任意一个 m o d e l 对象,也可以是用户主键 I D ;只能说是某个用户或某个业务触发了 model可以是任意一个model对象,也可以是用户主键ID ;只能说是某个用户或某个业务触发了 model可以是任意一个model对象,也可以是用户主键ID;只能说是某个用户或某个业务触发了someContentModel对象的操作

如果这里不指定causedBy 那么日志将会自动默认值User model当前登录的用户

如果不想关联日志触发者的话,可以使用causedByAnonymous()忽略记录

php 复制代码
activity()
   ->causedBy($model)
   ->performedOn($someContentModel)
   ->log('edited');

您可以使用withProperties主动向活动添加任何想要的属性:记录在properties

php 复制代码
activity()
   ->causedBy($model)
   ->performedOn($someContentModel)
   ->withProperties(['key' => 'value'])
   ->log('edited');

日志创建时间设置:createdAt(now()->subDays(10))日志时间设置为10天前

php 复制代码
activity()
   ->causedBy($model)
   ->performedOn($someContentModel)
   ->withProperties(['key' => 'value'])
   ->createdAt(now()->subDays(10))

   ->log('edited');

可以使用tap()方法在保存活动之前填充属性并添加自定义字段:如在日志基础上添加客户端Ip字段,首先数据库添加字段,然后通过tap方式设置ip

php 复制代码
activity()
   ->causedBy($model)
   ->performedOn($someContentModel)
   ->withProperties(['key' => 'value'])
   ->createdAt(now()->subDays(10))
    ->tap(function(Activity $activity) {
          $activity->ip = request()->ip();
       })
   ->log('edited');

日志清理

日志清理命令:需要config配置中设置delete_records_older_than_days保留日志天数

php 复制代码
php artisan activitylog:clean

也可以通过任务定时清理

php 复制代码
//app/Console/Kernel.php

protected function schedule(Schedule $schedule)
{
   $schedule->command('activitylog:clean')->daily();
}

清理特定名称的日志

php 复制代码
php artisan activitylog:clean my_log_channel

命令执行的时候可以添加时间参数:

php 复制代码
php artisan activitylog:clean --days=7

福利彩蛋:没有好玩的 API 接口?上百款免费接口等你来,免费 API,免费 API 大全

相关推荐
秦时明月之君临天下27 分钟前
MySQL purge 参数详解:innodb_purge_threads 与 innodb_purge_batch_size
数据库·mysql·1024程序员节
NoteDeep 深度笔记1 小时前
排期看不出冲突?把任务表切成甘特图
笔记·个人开发·甘特图·笔记应用·深度笔记·云笔记
2401_872418781 小时前
互联网公开信息检索完全指南:Google、Yandex、Wayback Machine、DNS、WHOIS、Shodan 等 OSINT 工具大全
开发语言·php
aixingpan1 小时前
aixingpan.cnAPI开发文档:api_docs_trichart_natal_solar_return_transit2接口指南
前端·php
努力努力再努力wz1 小时前
【C++ 高阶系列】C++ 高性能网络编程:当 Reactor 遇见协程:从 epoll 回调到异步 MySQL,彻底打通任务挂起与恢复
网络·c++·mysql
这个DBA有点耶2 小时前
测试全绿,上线三周数据没入账——那个95%的兼容度报告,漏掉的是边界
数据库·mysql·架构
gf13211112 小时前
python_高德地图驾车时长查询
数据库·python·mysql
时间售卖铺3 小时前
MySQL 日志管理
运维·数据库·mysql·云原生
秋风点枝3 小时前
数据库 01 · 体系结构与存储引擎
数据库·mysql
秋天的怀念_David3 小时前
算法一千零一夜 · 第十七夜 长街点灯
java·程序人生·算法