ktnw / log_support
log component for laravel
dev-master
2022-02-25 08:57 UTC
Requires
- ext-json: *
- illuminate/bus: ~5.0|~6.0|~7.0|^8.0
- illuminate/database: ~5.0|~6.0|~7.0|^8.0
- illuminate/http: ~5.0|~6.0|~7.0|^8.0
- illuminate/queue: ~5.0|~6.0|~7.0|^8.0
- illuminate/routing: ~5.0|~6.0|~7.0|^8.0
This package is auto-updated.
Last update: 2025-03-25 16:20:07 UTC
README
介绍
laravel日志组件,使用中间件+队列+注释方式,记录日志
使用说明
- 引入
composer require ktnw/log_support
- 发布
php artisan vendor:publish --provider="Ktnw\LogSupport\Providers\LogSupportServiceProvider"
- 修改namespace
php artisan support:log
- 配置env文件
QUEUE_SAVE_OP_LOG=save_logs
USER_OP_LOG_TABLE_NAME=user_op_log
其中,USER_OP_LOG_TABLE_NAME为用户操作日志表的表名;QUEUE_SAVE_OP_LOG为队列名称
- 创建用户操作日志表
先根据实际业务需求扩展用户操作日志记录表后,再进行表迁移。
php artisan migrate --path database/migrations/2022_02_25_140244_create_user_op_log_table.php
- 配置queue.php
主要配置queue和retry_after
若使用redis集群,注意 queue的 配置需加{}
示例如下:
'redis' => [
'driver' => 'redis',
'connection' => env('QUEUE_REDIS_CONNECTION', 'default'),
'queue' => env('REDIS_QUEUE', 'default'),
// 定义任务在执行以后多少秒后释放回队列。如果retry_after 设定的值为 90, 任务在运行 90 秒后还未完成,那么将被释放回队列而不是删除掉。毫无疑问,你需要把 retry_after 的值设定为任务执行时间的最大可能值。
'retry_after' => 3600, // 单位:秒
'block_for' => null,
],
创建failed_jobs_table表
php artisan queue:failed-table
php artisan migrate --path database/migrations/2022_02_25_162627_create_failed_jobs_table.php
注意:表名可能会变,表迁移时,请根据实际情况进行.
App\Http\Kernel.php配置
$routeMiddleware中增加如下配置'save_log' => \App\Http\Middleware\SaveLogMiddleware::class,
配置后,需要记录日志的路由中,使用中间件 save_log。 此种方式,可灵活配置,对于高并发的路由,可以不使用。
根据实际业务修改SaveLogMiddleware
主要设置: RESPONSE_SUCCESS_CODE.
- 运行队列
php artisan queue:work --queue=save_logs --tries=1
- 在需要记录用户操作日志的controller方法上添加注释:@saveLog,可根据实际业务需求,扩展:SaveLogMiddleware.
/**
*@saveLog opType:user-save, opDesc:保存用户
*/
public function save(){
// TODO
}
注释参数说明:
opType:用户操作类型
opDesc:用户操作描述
注意::(英文冒号)和 ,(英文逗号)为分割符号,opType和opDesc字符串中不要包含这个两个字符。