muchrm / laravel-graylog
将 Laravel 应用程序的错误记录到 Graylog
0.5.2
2018-03-27 05:42 UTC
Requires
- php: >=5.6.0
- graylog2/gelf-php: ^1.5
- illuminate/http: 5.*
- illuminate/support: 5.*
- monolog/monolog: ^1.20
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.0
- orchestra/testbench: ~3.0
- phpunit/phpunit: ^5.7
This package is not auto-updated.
Last update: 2024-09-29 04:48:09 UTC
README
## 注意:这是 swisnl/laravel-graylog2 的 fork 版本,我在我的项目中使用它。请勿使用我。
Laravel 5.x 的 Graylog 日志记录
安装
- 运行以下命令安装此包:
composer require muchrm/laravel-graylog - 如果不喜欢自动发现,请将服务提供者添加到 app.php 中:
Muchrm\Graylog\GraylogServiceProvider - 运行
php artisan vendor:publish将配置文件发布到 ./config/graylog.php。 - 根据需要配置
- 完成!
记录异常
默认设置启用异常记录。它将 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 模式发送数据包。