knovator / httplogger
这是http logger的描述
This package is not auto-updated.
Last update: 2024-09-29 15:42:36 UTC
README
此包添加了一个中间件,可以将传入的请求记录到默认日志中。如果在用户请求过程中发生任何错误,您仍然可以访问用户发送的原始请求数据。
此日志作为关键用户提交(如生成潜在客户的表单)的额外安全网。
安装
您需要在 composer.json 文件中添加 http logger 仓库。
"repositories": [
{
"type": "vcs",
"url": "http://github.com/knovator/logger.git"
}
],
在 composer.json 文件中禁用或添加安全的 http 标志。
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true,
"secure-http":false
},
您可以通过 composer 安装此包。
composer require knovator/httplogger "1.0.*"
您需要在 config/app.php 中添加 HttpLoggerServiceProvider 提供者。
Knovator\HttpLogger\HttpLoggerServiceProvider::class,
可选地,您可以使用以下命令发布配置文件:
php artisan vendor:publish --tag=config
这是已发布配置文件的内容
return [ /* * Filter out body fields which will never be logged. */ 'except' => [ 'password', 'password_confirmation', ], /* Default log channel.*/ 'log_channel' => 'custom_log', /* logged user columns */ 'action_by_columns' => [ 'id', 'first_name', 'last_name', 'email', 'phone' ], ];
用法
此包提供了一种中间件,可以将其添加为全局中间件或单个路由。
// in `app/Http/Kernel.php` protected $middleware = [ // ... \Knovator\HttpLogger\Middleware\HttpLoggerMiddleware::class ];
在您的配置文件中添加频道。
// in `config/logging.php` 'custom_log' => [ 'driver' => 'daily', 'path' => env('HTTP_LOGGER_FILE_NAME') ? storage_path('logs/' . env('HTTP_LOGGER_FILE_NAME') . '.log') : storage_path('logs/laravel.log'), ],
日志记录
使用两个类来处理传入请求的日志记录:一个 LogProfile 类将确定是否应记录请求,而 LogWriter 类将请求写入日志。
此包中添加了一个默认日志实现。它只会记录 POST、PUT、PATCH 和 DELETE 请求,并将其写入默认 Laravel 日志记录器。
您可以根据自己的需求实现自己的日志配置文件和/或日志写入器类,并在 config/http-logger.php 中进行配置。
自定义日志配置文件必须实现 \knovator\logger\src\LogProfile。该接口要求您实现 shouldLogRequest。
// Example implementation from `\knovator\logger\src\LogNonGetRequests` public function shouldLogRequest(Request $request): bool { return in_array(strtolower($request->method()), ['post', 'put', 'patch', 'delete']); }
自定义日志写入器必须实现 \knovator\logger\src\LogWriter。该接口要求您实现 logRequest。
// Example implementation from `\knovator\http-logger\src\DefaultLogWriter` public function logRequest(Request $request) { $fileNames = []; $method = strtoupper($request->getMethod()); $uri = $request->getPathInfo(); $bodyAsJson = json_encode($this->input($request, config('http-logger.except'))); $message = "{$method} {$uri} - Action From: {$this->clientInformation($request)} - Body: {$bodyAsJson}"; $this->uploadedFiles($request->files, $fileNames); if (!empty($fileNames)) { $message .= " - Files: " . json_encode($fileNames); } if (auth()->guard('api')->check()) { $user = auth()->guard('api')->user()->first(config('http-logger.action_by_columns')) ->toArray(); $userBody = json_encode($user); $message .= " - Action By: {$userBody}"; } $channel = config('http-logger.log_channel'); Log::channel($channel)->info($message); }
变更日志
请参阅 CHANGELOG 了解最近更改的信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 freek@spatie.be 联系我们,而不是使用问题跟踪器。
明信片软件
您可以自由使用此软件包,但如果它进入您的生产环境,我们非常感谢您从您的家乡寄给我们一张明信片,并说明您正在使用我们的哪个软件包。
我们的地址是:Spatie,Samberstraat 69D,2060 安特卫普,比利时。
我们将所有收到的明信片 发布在我们的公司网站上。
致谢
支持我们
Spatie 是一家位于比利时安特卫普的网页设计公司。您可以在我们的网站上找到我们所有开源项目的概述 在这里。
您的业务依赖于我们的贡献吗?联系我们并在 Patreon 上支持我们。所有承诺都将用于分配人力以维护和开发新功能。
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。