У меня есть небольшая дилемма, так как мне нужно придумать хороший регистратор, который одновременно регистрирует, что происходит в приложении, если есть вызванный Log::error
, он также должен уведомить администратора Devs и Sys через слабину. В настоящее время он работает , но добавляет время к ответу на запрос.
Ниже приведены мои настройки:
//config/logging.php
'default' => env('LOG_CHANNEL', 'stack'),
//truncated
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['daily', 'slack'],
],
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
'days' => 0,
],
'slack' => [
'driver' => 'slack',
'url' => env('LOG_SLACK_WEBHOOK_URL'),
'username' => 'App',
'emoji' => ':boom:',
'level' => 'error',
]
]
//truncated
//UserController
public function show(User $user)
{
//just a sample code, the important part is where the Log facade is called
try {
//business logic
} catch (Exception $e) {
Log::error(get_class(), [
'user_id' => $user->id,
'message' => $e->getMessage()
]);
}
return view('user.show', compact($user));
}
Это уже работает, но для Конечно, мы все еще можем улучшить это, чтобы уменьшить накладные расходы, хотя добавленное время для кода выше незначительно, но реальный код более сложен и имеет довольно много итераций
Как я могу изменить, изменить поведение 'слабый' логгер, чтобы положить sh в очередь, когда он срабатывает? Я предпочитаю кодировать его один раз и забыть, а не вспоминать, что мне нужно отправить sh в регистратор по требованию, например
Log::chanel(['daily', 'slack'])->...
ИЛИ
//this is good for more on particular event notification but not not error notification which can happen anywhere
Notification::route('slack', env('LOG_SLACK_WEBHOOK_URL'))->notify(new AlertDevInSlackNotification)`
Примечание:
- Я пытался добавить какой-то код в
bootstrap/app.php
, но он не работает
//bootstrap/app.php
$app->configureMonologUsing(function($monolog) use ($app) {
//some code here. does not work, just getting page not working
});
- Это как когда я звоню этот уровень журнала и этот канал, я хочу его поставить в очередь