muchrm/laravel-graylog

将 Laravel 应用程序的错误记录到 Graylog

0.5.2 2018-03-27 05:42 UTC

This package is not auto-updated.

Last update: 2024-09-29 04:48:09 UTC


README

## 注意:这是 swisnl/laravel-graylog2 的 fork 版本,我在我的项目中使用它。请勿使用我。

Laravel 5.x 的 Graylog 日志记录

Latest Stable Version Build Status

安装

  1. 运行以下命令安装此包: composer require muchrm/laravel-graylog
  2. 如果不喜欢自动发现,请将服务提供者添加到 app.php 中: Muchrm\Graylog\GraylogServiceProvider
  3. 运行 php artisan vendor:publish 将配置文件发布到 ./config/graylog.php。
  4. 根据需要配置
  5. 完成!

记录异常

默认设置启用异常记录。它将 HTTP 请求添加到 GELF 消息中,但不会添加 POST 值。检查 graylog2.log-requests 配置以启用或禁用此行为。

消息处理器

处理器为处理器添加了额外的功能。您可以通过修改 AppServiceProvider 来注册处理器

public function register()
{
    //...
    Graylog::registerProcessor(new \Muchrm\Graylog\Processor\ExceptionProcessor());
    Graylog::registerProcessor(new \Muchrm\Graylog\Processor\RequestProcessor());
    Graylog::registerProcessor(new MyCustomProcessor());
    //...
}

以下处理器默认可用

ExceptionProcessor

如果有的话,将异常数据添加到消息中。

RequestProcessor

将当前的 Laravel 请求添加到消息中。默认情况下,它添加 URL、方法和 IP。

自定义处理器

您可以通过实现 Muchrm\Graylog\Processor\ProcessorInterface 来定义自定义处理器。结果应类似于以下内容

<?php

namespace App\Processors;

use Auth;
use Muchrm\Graylog\Processor\ProcessorInterface;

class MyCustomProcessor implements ProcessorInterface
{
    public function process($message, $exception, $context)
    {
        $message->setAdditional('domain', config('app.url'));

        if (Auth::user()) {
            $message->setAdditional('user_id', Auth::id());
        }

        return $message;
    }
}

不报告异常

app/Exceptions/Handler.php 中,您可以定义 $dontReport 数组,其中包含不会报告给日志记录器的异常类。例如,您可以将 \Illuminate\Database\Eloquent\ModelNotFoundException 加入黑名单。有关更多错误信息,请参阅 Laravel 文档

记录任意数据

您可以实例化 Graylog 类以发送额外的 GELF 消息

// Send default log message
Graylog::log('emergency', 'Dear Sir/Madam, Fire! Fire! Help me!. 123 Cavendon Road. Looking forward to hearing from you. Yours truly, Maurice Moss.', ['facility' => 'ICT']);

// Send custom GELF Message
$message = new \Gelf\Message();
$message->setLevel('emergency');
$message->setShortMessage('Fire! Fire! Help me!');
$message->setFullMessage('Dear Sir/Madam, Fire! Fire! Help me!. 123 Cavendon Road. Looking forward to hearing from you. Yours truly, Maurice Moss.');
$message->setFacility('ICT');
$message->setAdditional('employee', 'Maurice Moss');
Graylog::logMessage($message);

故障排除

长消息(或异常)不会在 Graylog 中显示

您可能需要增加 UDP 传输中 UDP 块的大小(请参阅配置文件)。否则,您可以以 TCP 模式发送数据包。