首页 > 其他分享 >Laravel Activity Log操作日志扩展包

Laravel Activity Log操作日志扩展包

时间:2024-07-01 10:59:39浏览次数:3  
标签:Laravel Log 记录 Activity activity model php 日志 log

Laravel Activity Log操作日志扩展包

简介

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

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

优势

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

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

安装

安装组件

composer require spatie/laravel-activitylog

发布配置文件

php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="config"

数据迁移文件

php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="migrations"

数据迁移

php artisan migrate

.env配置数据库连接

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

ACTIVITY_LOGGER_DB_CONNECTION=connection

用法

基础用法

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

activity()->log('Look mum, I logged something');

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

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()忽略记录

activity()
   ->causedBy($model)
   ->performedOn($someContentModel)
   ->log('edited');

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

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

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

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

   ->log('edited');

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

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 artisan activitylog:clean

也可以通过任务定时清理

//app/Console/Kernel.php

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

清理特定名称的日志

php artisan activitylog:clean my_log_channel

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

php artisan activitylog:clean --days=7

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

标签:Laravel,Log,记录,Activity,activity,model,php,日志,log
From: https://blog.csdn.net/nbplus_007/article/details/140095164

相关文章

  • 深入理解SLF4J与Logback以及Log4j的关系
    在Java开发中,日志记录是一个不可或缺的部分,它帮助开发者监控应用程序的运行状态和调试问题。在众多日志框架中,SLF4J(SimpleLoggingFacadeforJava)、Logback和Log4j是最为流行的几个。本文将简述它们之间的关系以及如何强制让不实现SLF4J的Log4j实现SLF4J。SLF4J简介SLF4......
  • 如何在 Logback 和 Log4j 中获取日志:一个开发者指南
    日志记录是软件开发中的关键实践,它帮助我们监控应用程序的行为,定位问题并优化性能。在Java生态系统中,Logback和Log4j是两个广泛使用的日志框架,它们都基于SLF4JAPI提供日志服务。本文将指导你如何在这两个框架中获取日志,并展示它们的使用差异。简介无论是Logback......
  • 第三次blog
    一、前言 题目集7中只包含了一道题目,题目量较少。题目要求在题目集6中的题目的基础下进行迭代,要求对互斥开关设置限流电阻,不同的引脚之间分别设置不同的默认电阻值。同时增加模拟受控窗帘;在输入并联电路信息时考虑多个并联电路串联在一起及一条串联电路中包含其他串联电路的情......
  • 题目集7~8总结性blog
    一、前言作为本学期学习完面向对象程序设计之后的最后一个总结性blog,我学到的知识点有很多,也包括对本两次大作业的知识点的总结面向对象程序设计课程是计算机科学中的重要一课,它是一种编写计算机程序的方式,采用的是面向对象的技术。在学习此课程之前,我们需要先学习一些基本的编......
  • 题目集7~8的总结性Blog
    前言:这两次的题目集和以前相比没有很多新学的知识, 但是难度都明显上来了很多,主要考验学生综合能力运用问题,所以这两次编程的不是很理想,需要我对于逻辑和各种情况上细致分析,需要学生具备很强的设计和修改能力;我在写最后一次题目集时,花费了很长时间,但是依然毫无所获,非常遗憾,自己的......
  • 机器学习之logistic回归
    importnumpyasnpfrommatplotlibimportpyplotaspltdefload_dataset():data_list=[]label_list=[]withopen('testSet.txt','r')asf:forlineinf.readlines():line_arr=line.strip().split()......
  • 第三次blog
    第三次blog前言这次题目集相比与前面几次的题目集的题目都加大了很多,并且相比于前面的题目难度也略有增加,所考察的知识点也更加全面和综合,具体如下:oopt题目集07这次题目集仍然是前面几次菜单集的迭代,由于我前面几次菜单做的并不是很理想,所以在做这次题目集仍然成绩并......
  • 题目集7~8的总结性Blog
    7-7家居强电电路模拟程序-3分数70退出全屏作者 蔡轲单位 南昌航空大学智能家居是在当下家庭中越来越流行的一种配置方案,它通过物联网技术将家中的各种设备(如音视频设备、照明系统、窗帘控制、空调控制、安防系统、数字影院系统、影音服务......
  • 第三次blog
    第三次PTA总结前言 这两次pta题目集的难度较之前难度上升还是比较大的,最主要的原因是因为答案提交之后移除了测试点的告知,导致写的时候有点摸不着头脑,很难找出自己的错误设计与分析第七次题目集 智能家居是在当下家庭中越来越流行的一种配置方案,它通过物联网技术将家中的各......
  • 第三次Blog
    abstractclassDevice{Stringid;doubleresistance;Device(Stringid){this.id=id;}abstractStringgetStatus();abstractdoublegetResistance();}classSwitchextendsDevice{booleanstate;//false代表turnedon,true代表closedSwitch(Stringid){sup......