定制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=3或4,视图会自动在panel与card组件间切换。 - 卡片样式增强:在配置文件中设置
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()); } }⚠️ 注意事项:
- 换表名/连接只需改配置,模型构造函数会自动读取
loggerDatabaseTable与loggerDatabaseConnection; - 自定义模型必须兼容
rules()校验规则(description、userType必填等),否则记录会写入失败日志文件; - 若新增字段(如项目中的
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),仅供参考
