shureban / laravel-logplex
Laravel 美观日志消息
1.0.11
2024-06-20 05:19 UTC
Requires
- php: >=8.2
- guzzlehttp/guzzle: >=7.0.0
- laravel/framework: >=v10.0.0
README
安装
使用以下命令通过composer安装此包:
composer require shureban/laravel-logplex
将以下类添加到config/app.php
中的providers
数组中
Shureban\LaravelLogplex\LogplexServiceProvider::class,
您必须发布配置文件。
php artisan vendor:publish --provider="Shureban\LaravelLogplex\LogplexServiceProvider"
如何使用
1. 在config/logging.php
中的channels
部分添加新行
'logplex' => [
'driver' => 'custom',
'via' => \Shureban\LaravelLogplex\LogplexLogger::class,
'level' => env('LOGPLEX_LEVEL', \Monolog\Level::Error),
]
2. 编辑您的.env文件
LOG_STACK_CHANNELS=single,logplex
或向stack
通道添加额外的日志通道。例如
'stack' => [
'driver' => 'stack',
'channels' => ['single','logplex'],
],
结果
自定义
例如,您需要更改UserBlock
。您想添加与用户相关的组织信息。
1. 创建自己的MessageBuilder
版本。重要的是要实现MessageBuilderInterface
<?php namespace App\Logging\Logplex; use Shureban\LaravelLogplex\Builder\MessageBuilderInterface; use Shureban\LaravelLogplex\Channels\Slack\Blocks\FileBlock; use Shureban\LaravelLogplex\Channels\Slack\Blocks\HeaderBlock; use Shureban\LaravelLogplex\Channels\Slack\Blocks\RequestBlock; use Shureban\LaravelLogplex\Channels\Slack\Blocks\TraceBlock; use Shureban\LaravelLogplex\Channels\Slack\Elements\DividerSection; use Shureban\LaravelLogplex\Channels\Slack\Message; use Shureban\LaravelLogplex\LogRecord; class MessageBuilder implements MessageBuilderInterface { public function buildSlackMessage(LogRecord $logRecord, string $username, string $emoji): Message { $message = new Message($username, $emoji); // Other blocks $message->addBlock(new UserBlock($logRecord)); // Other blocks return $message; } }
2. 创建您的UserBlock
实现
<?php namespace App\Logging\Logplex; use Shureban\LaravelLogplex\Channels\Slack\Block; use Shureban\LaravelLogplex\Channels\Slack\Elements\FieldsSection; use Shureban\LaravelLogplex\Channels\Slack\Elements\HeaderSection; use Shureban\LaravelLogplex\LogRecord; class UserBlock implements Block { private LogRecord $logRecord; public function __construct(LogRecord $logRecord) { $this->logRecord = $logRecord; } public function toArray(): array { $user = $this->logRecord->getUser(); if (is_null($user)) { return []; } return [ (new HeaderSection('User info :information_desk_person:'))->toArray(), (new FieldsSection([ sprintf("*Id:*\n%s", $user->getAuthIdentifier()), sprintf("*Email:*\n%s", $user->getEmailForVerification()), sprintf("*Org. ID:*\n%s", $user->organization->id), sprintf("*Org. Name:*\n%s", $user->organization->name), ]))->toArray(), ]; } }