これは何
環境変数を追加するだけで、Elastic Beanstalkで動いているLaravelのログをお手軽にCloudWatch Logsに転送する方法です。
CloudWatch Logsに転送されれば、いちいちeb ssh
でインスタンスにログインしてログを見たりしなくて済みます。
どうなる?
ElasticBanstalkがデフォルトでCloudWatchLogsに連携している、/var/log/httpd/erro_log
にLaravelのログ書き出す様にする
やりかた
Laravelが吐き出したログはデフォルトではstorage/logs/laravel.log
ファイルに書き込まれます。
これはlogger.phpで以下の様に設定されているからです。
<?php
use Monolog\Handler\StreamHandler;
return [
/*
|--------------------------------------------------------------------------
| Default Log Channel
|--------------------------------------------------------------------------
|
| This option defines the default log channel that gets used when writing
| messages to the logs. The name specified in this option should match
| one of the channels defined in the "channels" configuration array.
|
*/
'default' => env('LOG_CHANNEL', 'stack'),
// 略
環境変数のLOG_CHANNEL
を設定することで、簡単にこれを変更することができます。
Elasticbeanstalkのコンソールから以下の様に設定しましょう
LOG_CHANNEL=errorlog
こうすると、
/var/log/httpd/error_log
にログが書き出されるようになります。
このログファイルは、BeanstalkがデフォルトでCloudwatch ログに転送する様に設定されているので、
AWSコンソールの
CloudWatch > ログ > ロググループ > hogehoge_beanstalk_enviroment/var/log/httpd/error_log
からログの中身を確認することができます。
もっといいやり方
同僚の @yamotuki さんが書いてました
同じ様にしてlaravel.logをCloudwatch Logsに入れられるはずです。