Я пытаюсь протолкнуть свои журналы Laravel в Amazon CloudWatch, я следовал тому, что они сказали в следующей статье:
Регистрация приложений PHP с помощью Amazon CloudWatch Logs и Monolog
внутри самозагрузки / 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
Спасибо!
——- ОБНОВИТЬ ——-
Вы можете найти ответ здесь:
Задача ещё не решена.
Других решений пока нет …