knovator/httplogger

本包最新版本(v1.0.10)没有可用的许可证信息。

这是http logger的描述

安装: 1

依赖: 0

建议者: 0

安全: 0

星星: 0

关注者: 2

分支: 0

开放问题: 0

类型:项目

v1.0.10 2019-02-14 11:19 UTC

This package is not auto-updated.

Last update: 2024-09-29 15:42:36 UTC


README

Latest Version on Packagist Build Status Quality Score Total Downloads

此包添加了一个中间件,可以将传入的请求记录到默认日志中。如果在用户请求过程中发生任何错误,您仍然可以访问用户发送的原始请求数据。

此日志作为关键用户提交(如生成潜在客户的表单)的额外安全网。

安装

您需要在 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 类将请求写入日志。

此包中添加了一个默认日志实现。它只会记录 POSTPUTPATCHDELETE 请求,并将其写入默认 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)。有关更多信息,请参阅 许可证文件