LoginSignup
8
2

More than 3 years have passed since last update.

ElasticBeanstalk上のLaravelアプリケーションからログをAWS CloudWatch Logsに出力する方法(awslogs agent設定)

Posted at

これは何

AWS ElasticBeanstalk 上にデプロイした Laravel で作ったアプリケーションにおいて、アプリケーションログを任意のPathに出力して、それをawslogs agent の設定をすることによりCloudWatch Logs上で見る方法について。

環境

$ php -v
PHP 7.2.13
$ composer show laravel/framework | grep versions
versions : * v5.8.3

概要

  • Laravelで任意のPathにログ出力をする
  • .ebextensions に awslogs agent の設定を記述する 

詳細

Laravelで任意のPathにログ出力をする

まず config.logging.php に channel 設定を追加する


    'channels' => [
        'daily' => [
            'driver' => 'daily',
            'path' => storage_path('logs/laravel.log'),
            'level' => 'debug',
            'days' => 14,
        ],
        // このブロックを追加します
        'new_application_log' => [
            'driver' => 'daily',
            'path' => storage_path('logs/new_application.log'),
            'days' => 14,
        ],
    ],

Log Facade を用いてchannel を指定する。


use Illuminate\Support\Facades\Log;

class IndexController extends Controller
{
    public function index($id)
    {
        Log::channel('new_application_log')->getLogger()->info("this is log output");

        以下略
    }
}

.ebextensions に awslogs agent の設定を記述する 


// ebのdeploy時に以下のファイルを配置しますよ、という書き方
files:
  // これは awslogs の設定ファイル
  "/etc/awslogs/config/application_log.conf":
    mode: "000644"
    owner: root
    group: root
    // 以下の内容のファイルを配置する
    content: |
      // セクションタイトルなのでなんでも良い
      [new_application_log]
      // cloudwatch上のlog groupの名前。 /aws/elasitcbeanstalk/<applicationName>/new_application_log みたいな名前になる
      log_group_name = `{"Fn::Join":["/", ["/aws/elasticbeanstalk", { "Ref":"AWSEBEnvironmentName" }, "new_application_log"]]}`
      // デフォルトだとインスタンスIDっぽい。うっかり`=`の後ろに空白を入れると認識されずデフォルト設定になってしまうみたい 
      log_stream_name=all
      // ログ出力設定と対応したPathになっていればOK
      file=/var/app/current/storage/logs/new_application*.log

commands:
  "01":
    command: chkconfig awslogs on
  "02":
    // eb deploy しただけだとawslogsエージェントは再起動せずに設定が反映されないのでrestartしておく 
    command: service awslogs restart
8
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2