Я пытаюсь протолкнуть свои журналы Laravel в Amazon CloudWatch. Я следовал тому, что они сказали в следующей статье: Регистрация PHP-приложений с помощью Amazon CloudWatch Logs и Monolog
Внутри bootstrap / app.php Я добавил следующий код:
$app->configureMonologUsing(function($monolog){
try{
$options = [
'region' => env('AWS_REGION'),
'version' => 'latest',
'credentials' => [
'key' => env('AWS_KEY'),
'secret' => env('AWS_SECRET')
]
];
$cwClient = new CloudWatchLogsClient($options);
$cwGroupName = $logGroupName;
$cwStreamNameApp = $logStreamName;
$cwRetentionDays = 90;
$bubble = false;
$cwHandlerApp = new CloudWatch($cwClient, $cwGroupName, $cwStreamNameApp, $cwRetentionDays, 10000, [], Logger::INFO, $bubble);
$monolog->pushHandler($cwHandlerApp);
}catch(\Exception $e){
var_dump($e->getMessage());
}
});
Я также добавил тестовый маршрут , в котором записывается информационный журнал:
Route::get('/test', function () {
Log::info('Clicking on test link!!!');
return view('test');
});
но ничего не происходит, он даже не записывает журналы в файл laravel.logs и в Amazon CloudWatch.
Он работает только при попытке вручную записать новый журнал в Amazon CloudWatch с помощьюследующий код:
try {
$options = [
'region' => env('AWS_REGION'),
'version' => 'latest',
'credentials' => [
'key' => env('AWS_KEY'),
'secret' => env('AWS_SECRET')
]
];
$client = new CloudWatchLogsClient($options);
$result = $client->putLogEvents([
'logGroupName' => $logGroupName,
'logStreamName' => $logStreamName,
'logEvents' => [
[
'message' => 'This is a test 1',
'timestamp' => round(microtime(true) * 1000),
]
]
]);
} catch (\Aws\CloudWatchLogs\Exception\CloudWatchLogsException $e) {
echo $e->getAwsErrorCode() . "\n";
echo $e->getMessage() . "\n";
}
Моя среда Linux (ubuntu), Работа с php5.6, Laravel-5.4
Спасибо!
------- ОБНОВЛЕНИЕ -------
Вы можете найти ответ здесь:
https://stackoverflow.com/a/51790656/4832775