azurath / larelog
Laravel 请求记录器
Requires
- ext-json: *
- doctrine/dbal: ^2.0
- guzzlehttp/guzzle: ^6.0
This package is auto-updated.
Last update: 2024-09-20 05:47:03 UTC
README
记录所有发送到和来自您的 Laravel 应用程序的 HTTP 请求,以及 GuzzleHTTP 请求。
特性
- 记录传入(Laravel)和传出(GuzzleHttp)请求
- 对 URL(使用正则表达式)、MIME 类型、HTTP 状态码的黑白名单
- 将日志保存到数据库
- 将日志写入 Laravel 日志
- 将日志项传递给用户回调函数
- 日志轮换(按数量和日期)
- 保存已认证用户(支持多个 Laravel 用户模型)
安装
- 运行
composer require azurath/larelog - 将
\Azurath\Larelog\Middleware\Logger::class添加到app/Http/Kernel.php文件中的$middleware数组末尾 - 运行
php artisan vendor:publish --provider=Azurath\Larelog\LarelogProvider - 运行
php artisan migrate - 享受吧。
GuzzleHttp
如果您正在使用 GuzzleHttp 并希望记录通过它执行的请求,只需在创建 GuzzleHttp 实例时传递额外的参数即可
$client = new \GuzzleHttp\Client([
'handler' => (new \Azurath\Larelog\Larelog())->getGuzzleLoggerStack(),
]);
或者,您可以将 Larelog 回调附加到现有堆栈
$handlerStack = HandlerStack::create();
//...
$larelogStackCallback = (new \Azurath\Larelog\Larelog())->getGuzzleLoggerStackItem();
$handlerStack->push($larelogStackCallback);
设置
设置存储在 config/larelog.php。
日志轮换
添加
$schedule->job(new \Azurath\Larelog\Jobs\RotateLogs())
->hourly()
->withoutOverlapping(60);
到 app/Console/Kernel.php 以启用日志轮换。
将请求项转换为文本
您可以得到数据库中存储的日志项的文本表示形式
$logItem = \Azurath\Larelog\Models\LarelogItem::where(...)->first();
$text = $logItem->formatAsText();
获取请求项的已认证用户
如果请求是由已认证的用户执行的,则将其 id 和模型名称(在您有不同的认证守卫和不同的提供者时)也保存到数据库中。您可以访问此用户
$logItem = \Azurath\Larelog\Models\LarelogItem::where(...)->first();
$user = $logItem->user;
字段
基本上,这个日志记录器保存请求开始时间(started_at)、请求执行时间(execution_time)、请求方向(direction,'incoming' 或 'outgoing')、Laravel 请求类型(type,api/web 等)、HTTP 方法(http_method)、HTTP 协议版本(http_protocol_version)、HTTP 响应代码(http_code)、URL(url)、请求头(request_headers)、请求数据(request)、响应头(response_headers)、响应数据(response),如果已认证,则还保存执行此请求的 Laravel 用户(属性 user,关系 user())。
常见问题解答
Q:为什么叫 'Azurath'?
A:这是误听的名称 'Azurewrath',然后听起来像 'Azuraf',经过几年变成了昵称 'Azurat'。
Q:为什么叫 'Larelog'?
A:LAravel REquest LOGger。