akempes / laravel-request-logging
记录所有传入请求及其响应
Requires
- illuminate/support: ~5|~6|~7|~8|~9|~10
- laravel/framework: ~5|~6|~7|~8|~9|~10
Requires (Dev)
- mockery/mockery: ^1.5
- orchestra/database: ^6.0
- orchestra/testbench: ^6.24
- phpunit/phpunit: ^9.5
- sempro/phpunit-pretty-print: ^1.4
- timacdonald/log-fake: ^1.9
README
此Laravel包包含用于记录请求及其响应(包括所有参数)的中介件。这将允许您监控和回放请求,这对于调试非常有用。
安装
您可以使用从 composer 安装,从 Packagist
composer require akempes/laravel-request-logging
下一步是将中介件添加到您的 app/Http/Kernel.php 文件中。
将请求记录添加到所有路由
protected $middleware = [
...
\Akempes\RequestLogging\LogRequest::class,
...
];
或者只为特定的路由(组)添加。
protected $routeMiddleware = [
...
'logRequest' => \Akempes\RequestLogging\LogRequest::class,
...
];
最后,虽然不是必须的,您还可以发布配置文件
php artisan vendor:publish --provider="Akempes\RequestLogging\RequestLoggingServiceProvider"
升级指南
1.x -> 2.x
这应该不难,只需运行 php artisan vendor:publish --provider="Akempes\RequestLogging\RequestLoggingServiceProvider"
以获取新的迁移。不要忘记运行 php artisan migrate
。
配置
启用
您可能已经猜到了,当启用为 true
时,请求将被记录。您可以将 REQUEST_LOGGING_ENABLED
添加到您的 .env
文件以获得最大灵活性。
方法
您要记录的请求方法的数组。
排除路由
某些路由可能不需要记录。输入完整的路径:在 Laravel 的 Request::is()
方法中使用 /first-segment/second-segment
。
排除请求字段
例如,字段 password
,某些字段可能包含敏感信息,不适合记录。这些可以从记录中排除。
请求持续时间限制
您可能想记录耗时较长的请求。这可以帮助您优化应用程序。输入最大允许的持续时间(毫秒)或 false
以禁用。注意:请求不会被终止,只是创建一个额外的记录。另请参阅:警告日志通道和警告日志级别以下。
显示响应HTML
默认情况下,仅记录 JSON 响应体以防止日志文件充满 HTML。但您可以通过将其设置为 false
来关闭此功能。
排除响应字段
实际上与 exclude-request-fields
相同,某些响应数据可能包含敏感信息,不适合记录。
日志通道
您可以通过添加在您的日志配置中定义的日志通道来指定日志应放置的位置。允许多个日志通道。
日志级别
默认情况下使用日志级别 info
,但您可以选择自己的。 (截至 Laravel:紧急、警报、关键、错误、警告、通知、信息、调试。)
警告日志通道
与日志通道相同,但此通道仅用于超过 request-duration-limit
的请求的日志。
警告日志级别
与日志级别相同,但默认日志级别为 warning
。此日志级别仅用于超过 request-duration-limit
的请求的日志。
数据库记录
除了记录到文件外,您还可以选择将记录记录到数据库表。
启用
启用数据库记录
表
表名,默认值为 'requests'。
持久性
根据您的设置,应用程序和流量日志文件(和数据库)可能消耗大量的存储数据。为了解决这个问题,记录的请求在设置的天数后将从表中删除。默认值为 2 天。
限制响应
为了防止数据库表过大,您可能希望限制存储的响应数据。将此值设置为大于0的值后,数据将在设置的字数后截断。默认值为2000。
request-log-format
您可以使用以下变量来组合自定义日志消息。
response-log-format
您可以使用以下变量来组合自定义日志消息。