定制 xxxcoltxxx/request-logger 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

xxxcoltxxx/request-logger

Composer 安装命令:

composer require xxxcoltxxx/request-logger

包简介

Logging http requests and errors

README 文档

README

Build Status Latest Stable Version Total Downloads

This package allows sending request and response payload to the external logging system.

Supported out-of-box transports:

  • graylog transport for sending request log to Graylog server
  • log transport for sending request log to Laravel logging system
  • null transport for skip request log in application tests

Installation

Install via composer

composer require xxxcoltxxx/request-logger

Publish the configuration file

php artisan vendor:publish --provider="RequestLogger\RequestLoggerServiceProvider"

Add exception reporting to your app/Exception/Handler.php file

public function report(Exception $exception)
{
    request_logger()->setException($exception);

    // ...
    parent::report($exception);
}

Fill configuration

// Enable request logger for all requests without adds middleware
'all_routes' => true,

// Default transport
'default' => env('REQUEST_LOGGER_TRANSPORT', 'graylog'),

// The class for format log message
'formatter' => RequestLogger\RequestFormatter::class,

/*
 * Allowed transports with its configuration.
 * Drivers: 'graylog', 'log', 'null'
 */
'transports' => [

    // The graylog transport
    'graylog' => [
        // The Short message for graylog
        'short_message' => env('GRAYLOG_SHORT_MESSAGE', 'requests'),

        // Limit content size (in bytes). Set false to disable. Graylog has limitations on input messages
        'content_limit' => env('GRAYLOG_CONTENT_LIMIT', 30000),

        // The IP address of the log server
        'host' => env('GRAYLOG_HOST', '127.0.0.1'),

        // The UDP port of the log server
        'port' => env('GRAYLOG_PORT', '12201'),

        // The driver for send requests log to log server
        'driver' => RequestLogger\Transports\GelfUdpTransport::class,
    ],

    // ...
],

Adding app messages to request log

You can add custom messages to payload with request_logger helper.

request_logger()->addMessage('Full name: John Doe')

Enable logging only for specific routes

Request logger enabled on all routes by default. You can disable all_routes option in the configuration file and use request_logger middleware in routes configuration.

Documentation for registering middleware can be found in Laravel documentation

# config/request_logger.php

return [
    'all_routes' => false,

    // ...
];

# routes/api.php

Route::get('admin/profile', function () {
    //
})->middleware('request_logger');

Custom log format

For custom log format you can use closure in the configuration file:

# config/request_logger.php

return [
    // ...

    'formatter' => function () {
        $provider  = request_logger();
        $exception = $provider->getException();
        $request   = $provider->getRequest();
        $response  = $provider->getResponse();

        return [
            'uri'           => $request->getRequestUri(),
            'has_exception' => ! is_null($exception),
        ];
    }

    // ...

Writing custom drivers

For writing custom driver you must add driver configuration and implement RequestLogger\Transports\RequestLoggerTransport interface:

# .env

REQUEST_LOGGER_TRANSPORT=custom

# config/request_logger.php

return [
    // ...

    'transports' => [
        // ...

        'custom' => [
            'driver' => Namespace\CustomTransport::class,
            'custom_option' => 'value',
        ],
    ],
];

Disable request logger in application tests

Use null driver. You can use REQUEST_LOGGER_TRANSPORT variable in phpunit.xml configuration file.

Testing

composer install
vendor/bin/phpunit tests

Roadmap

  1. Unit tests
  2. Write Documentation for:
    • Custom log format
    • Writing custom drivers
  3. Add log driver
  4. Add null driver
  5. Add changelog
  6. Make video "How it works with graylog"

统计信息

  • 总下载量: 447
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 10
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 10
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2018-09-08

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固