当前位置: 首页 > news >正文

定制laravel-logger:扩展自定义路由、视图与活动模型的完整指南

定制laravel-logger:扩展自定义路由、视图与活动模型的完整指南

【免费下载链接】laravel-loggerAn out the box activity logger for your Laravel or Lumen application. Laravel logger is an activity event logger for your laravel application. It comes out the box with ready to use with dashboard to view your activity. Laravel logger can be added as a middleware or called through a trait. This package is easily configurable and customizable. Supports Laravel 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 6, and 7+项目地址: https://gitcode.com/gh_mirrors/la/laravel-logger

laravel-logger 是一款开箱即用的 Laravel / Lumen 活动日志记录包(Activity Logger):它通过中间件或 Trait 自动记录登录、登出、访问路由、IP、User Agent 等行为事件,并提供一个现成的活动仪表盘供你查询、清空、恢复和导出日志。本文面向新手和普通用户,讲解如何快速定制它的自定义路由、自定义视图与自定义活动模型三大核心扩展点。

安装方式(Laravel 5.5+ 自动发现,无需手动注册):composer require jeremykenedy/laravel-logger,然后执行php artisan migrate建表。

一、一键发布可定制文件:定制的起点 🚀

所有定制的基础,是把包的配置、视图、语言文件"发布"到你的项目里,这样修改才会持久化(升级包时不被覆盖):

php artisan vendor:publish --tag=LaravelLogger

发布后会得到三类资产:

资产位置定制用途
配置文件config/laravel-logger.php修改表名、模型、布局、开关等
视图文件resources/views/vendor/LaravelLogger自定义仪表盘、弹窗、表单外观
语言文件lang/vendor/LaravelLogger本地化界面文案

包的入口逻辑在 LaravelLoggerServiceProvider 中:它合并配置、加载默认路由、注册迁移和认证事件监听,并声明上述 publish 规则——理解这一文件,是理解整个定制机制的关键。

二、自定义路由技巧:把仪表盘装进你的系统 📌

默认情况下,laravel-logger 自动注册了一批路由(如/activity主仪表盘、/activity/cleared已清空日志、/activity/log/{id}详情下钻、/activity/export导出等),路由定义位于 routes/web.php。

如果你想改前缀、换权限中间件、加缓存或限流,只需两步:

1. 关闭包内置路由——在.env中设置:

LARAVEL_LOGGER_DISABLE_ROUTES=true

(对应配置项disableRoutes,见 config/laravel-logger.php。旧版本需手动在配置文件中补上该项。)

2. 在你的routes/web.php中复刻并自由改写路由组,核心写法:

Route::group([ 'prefix' => 'admin/activity', // 换成你想要的前缀 'namespace' => 'jeremykenedy\LaravelLogger\App\Http\Controllers', 'middleware' => ['web', 'auth', 'activity'], ], function () { Route::get('/', 'LaravelLoggerController@showAccessLog')->name('activity'); Route::get('/cleared', 'LaravelLoggerController@showClearedActivityLog'); Route::get('/log/{id}', 'LaravelLoggerController@showAccessLogEntry'); Route::get('/export', 'LaravelLoggerController@exportActivityLog'); Route::delete('/clear-activity', 'LaravelLoggerController@clearActivityLog'); Route::post('/restore-log', 'LaravelLoggerController@restoreClearedActivityLog'); });

💡 控制器 LaravelLoggerController 本身已内置auth中间件,并支持启用role:admin之类的角色中间件做二级权限控制,你可以在此基础上再叠加自己的权限策略。

三、自定义视图技巧:让仪表盘融入你的 UI 🎨

laravel-logger 的仪表盘视图(主面板 activity-log.blade.php、详情下钻、确认弹窗等)都继承自你自己应用的布局文件,因此无需改包源码即可换肤:

  • 指定父级布局.env中设置LARAVEL_LOGGER_LAYOUT=layouts.admin(默认layouts.app),仪表盘就会套用你后台的侧边栏和导航。
  • Bootstrap 版本切换LARAVEL_LOGGER_BOOTSTRAP_VERSION=34,视图会自动在panelcard组件间切换。
  • 卡片样式增强:在配置文件中设置bootstrapCardClasses,例如'text-white bg-primary mb-3',一行搞定配色。
  • 资源注入位置bladePlacement支持yield(输出到@section)与stack@push追加)两种模式,bladePlacementCss/bladePlacementJs可指定具体的 section 名称,方便接入你项目的资源管理方案。
  • CDN 资源开关:jQuery、Bootstrap、Popper、Font Awesome 的 CDN 均提供开关与自定义 URL 配置项,内网环境可全部关闭改用本地静态文件。

需要深度改造(例如把搜索栏换成你的组件、增加图表区)时,执行第二步的 publish 命令后直接编辑resources/views/vendor/LaravelLogger/下的 Blade 文件即可——主视图通过@include组合了搜索表单、状态提示、脚本等 partials,按需替换对应片段最稳妥。

四、自定义活动模型技巧:替换数据层 🧩

包默认的 Eloquent 模型是 Activity,它使用SoftDeletes支持"清空→查看→恢复/彻底删除"的日志生命周期,并内置了rules()校验方法和userAgentDetails访问器。

最简单的替换方式——在.env指向你自己的模型类:

LARAVEL_LOGGER_ACTIVITY_MODEL=App\Models\MyActivity LARAVEL_LOGGER_DATABASE_TABLE=activity_logs LARAVEL_LOGGER_DATABASE_CONNECTION=mysql

然后继承默认模型并扩展:

class MyActivity extends \jeremykenedy\LaravelLogger\App\Models\Activity { // 例如:新增索引访问器、关联关系、范围方法 public function scopeRecent($q) { return $q->where('created_at', '>=', now()->subDay()); } }

⚠️ 注意事项:

  1. 换表名/连接只需改配置,模型构造函数会自动读取loggerDatabaseTableloggerDatabaseConnection
  2. 自定义模型必须兼容rules()校验规则(descriptionuserType必填等),否则记录会写入失败日志文件;
  3. 若新增字段(如项目中的relId/relModel关联模型字段就是靠迁移扩展的,见 2025_12_11_002659_update_laravel_logger_activity_table.php),请编写迁移自行加列,并把它加入模型$fillable

五、记录方式速查:中间件 + Trait 双通道 ✍️

方式用法适合场景
中间件activity路由组加'middleware' => ['web', 'activity']自动记录页面访问、方法、路由
TraitActivityLogger类中use ActivityLogger;后调用$this->activity('描述', '详情', ['id' => 1, 'model' => 'App\Models\Order'])记录业务动作(下单、审批等)

中间件 LogActivity 支持白名单排除:LARAVEL_LOGGER_MIDDLEWARE_EXCEPT=health,ping可跳过健康检查等高频路径;Trait 的实现(ActivityLogger)会自动识别爬虫、按 HTTP 方法生成"已查看/已创建/已编辑/已删除"描述,并处理 Cloudflare 与代理转发的真实 IP。

六、进阶配置清单:搜索、日期过滤与大数据量分页 ⚡

.env中打开这些开关,仪表盘能力会显著增强:

LARAVEL_LOGGER_ENABLE_SEARCH=true LARAVEL_LOGGER_SEARCH_FIELDS=description,user,method,route,ip LARAVEL_LOGGER_ENABLE_DATE_FILTERING=true # 按日期范围/预设周期(近7天、近30天等)筛选 LARAVEL_LOGGER_ENABLE_EXPORT=true # 导出 CSV / JSON / Excel LARAVEL_LOGGER_CURSOR_PAGINATION_ENABLED=true # 百万级日志启用游标分页,大幅提升加载速度

配合/activity?period=last_7_days/activity/export?format=csv&period=last_30_days这类 URL 参数,可以把它直接嵌进报表流程。角色控制只需LARAVEL_LOGGER_ROLES_ENABLED=true并指定LARAVEL_LOGGER_ROLES_MIDDLWARE=role:admin(兼容 spatie/laravel-permission 等常见角色包)。

总结

定制 laravel-logger 的黄金路径是:vendor:publish --tag=LaravelLogger发布资产 → 用LARAVEL_LOGGER_DISABLE_ROUTES接管路由 → 用布局/卡片配置换肤视图 → 用LARAVEL_LOGGER_ACTIVITY_MODEL替换数据模型。三个扩展点全部围绕配置驱动设计,几乎不改包源码就能完成企业级定制,这也是它"简单、完整、开箱即用"的精髓所在。

【免费下载链接】laravel-loggerAn out the box activity logger for your Laravel or Lumen application. Laravel logger is an activity event logger for your laravel application. It comes out the box with ready to use with dashboard to view your activity. Laravel logger can be added as a middleware or called through a trait. This package is easily configurable and customizable. Supports Laravel 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 6, and 7+项目地址: https://gitcode.com/gh_mirrors/la/laravel-logger

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4249474.html

相关文章:

  • 降漏写成法定义务之后,分区计量与工单闭环如何让地下漏点显形
  • 八大网盘拿到真实直链:LinkSwift网盘直链解析工具实操指南
  • 低成本LoRA微调ChatGLM3-6B:从数据准备到模型部署
  • AI挖掘机落地指南:从感知、规划到真机部署的完整实践
  • PaperTodo 快速上手:10 分钟把今天的待办贴到桌面
  • material-scrolling源码精读:RecyclerViewHolder如何桥接ObservableRecyclerView滚动状态
  • axure-cn Axure 汉化语言包安装教程:15 分钟让 RP 9/10/11 变成中文界面
  • 如何为 doc2dash 编写自定义解析器:从 Parser 协议到 Patcher 的完整插件开发指南
  • WinScript 快速上手指南:把 Windows 精简、隐私与性能优化变成勾选操作
  • PDF补丁丁完全使用指南:免费开源PDF工具箱,书签编辑与批量处理快速上手
  • 灰色预测GM(1,1)模型:小样本时间序列预测的数学建模利器
  • 基于springboot的英语课程教学管理系统毕业设计项目源码
  • 【AI大模型】一文搞懂多模态大模型,从“文字专家“到“全能感知者“,零基础小白收藏这一篇就够了!!
  • 3步搭好企业微信审批超时提醒系统:EasyWeChat审批监控完整指南
  • GNOME 系统监视器 Applet:3 步快速在状态栏显示 CPU、内存与网速
  • 神奇弹幕 MagicalDanmaku 使用指南:一款免费的 B 站直播场控机器人如何接管你的直播间
  • 6 个下游聚合有 1 个 hang 住,Tomcat 200 个线程全卡死:CompletableFuture 编排的 4 个隐形约定
  • SillyTavern 性能优化:5 步快速提速清单,让角色卡和聊天变快变轻(附 config.yaml 参数速查)
  • 一条链接搞定B站视频下载与AI总结
  • 低剖面180W AC-DC电源设计:从效率到散热的全流程解析
  • MSLab 入门指南:用 3 条 PowerShell 命令搭出 Azure Local 测试集群
  • 为什么Venice值得关注:LinkedIn开源的行星级派生数据平台完整指南
  • KISS-Matcher是什么:MIT开源的3D点云配准利器,一文读懂FastRobust全局配准的完整原理
  • MT-GNN:连续时间网格演化与度量张量嵌入的脑形态预测
  • OBS 直播按键显示怎么做?Input Overlay 免费插件 5 分钟配置教程
  • 免费开源 Crimson 字体完整使用指南
  • AI奖励作弊第一课:ai-safety-gridworlds的tomato_watering浇番茄环境实战教程
  • 审查员常用链接
  • K8s集群Containerd运行时配置定时备份实操
  • 大模型VS大语言模型:核心区别详解,一篇文章带你搞清楚