nekochans/qiita-stocker-backend

本番で動作するDockerfileを追加する

Closed this issue · 2 comments

Doneの定義

表題の通り。

@kobayashi-m42 この課題とは直接関係はないんだけど、この課題の中で nekonomokochan/php-json-logger のバージョンを最新にした上で以下の変更を当てておくと良いかも🐱!

app/Infrastructure/Logger.phpの __invoke を以下のように変更する↓

    public function __invoke(array $config)
    {
        $slackHandlerBuilder = new SlackHandlerBuilder($config['slack_token'], $config['slack_channel']);

        $traceId = Uuid::uuid4();
        $builder = new LoggerBuilder($traceId);
        $builder->setChannel('qiita-stocker-backend');
        $builder->setLogLevel(JsonLogger::toMonologLevel($config['level']));
        $builder->setUseInDocker(true);
        $builder->setSkipClassesPartials(['Illuminate\\']);
        $builder->setSlackHandler($slackHandlerBuilder->build());

        return $builder->build();
    }

それから config/logging.php の配列も少し変更↓

    'channels' => [
        'app' => [
            'driver'        => 'custom',
            'level'         => env('APP_LOG_LEVEL', 'debug'),
            'slack_token'   => env('NOTIFICATION_SLACK_TOKEN'),
            'slack_channel' => env('NOTIFICATION_SLACK_CHANNEL'),
            'via'           => App\Infrastructure\Logger::class,
        ],

こうするとJSON形式のアプリケーションログが標準出力されるようになるから、CloudWatchにログを送信出来るようになるよ👍

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/userguide/using_awslogs.html

EC2モードで起動している場合はSSHでコンテナを実行しているインスタンスに入れるからまだマシだけどFargateの場合、これをやってないとエラーが起きた時に何が起こったか分かりにくいから、設定を変更しておくと良いと思う!

※ ログの設定は後回しで、別issueで対応でも、もちろん👍

@keitakn
コメントありがとう!これも合わせて対応しちゃうね!