LoginSignup
5
7

More than 3 years have passed since last update.

Docker運用のためのLaravelログ出力

Last updated at Posted at 2020-06-24

概要

Docker運用におけるログ出力は標準出力/標準エラー出力となるが、単純にLaravel側でログを標準出力に設定しても出力されず、該当する記事も見当たらなかったため、実装した内容を記録する。

Laravelチャンネルドライバ設定

これは公式などにも出ているので問題にならないが、具体的には以下の二通りがある。

  • 直接標準出力を指定するパターン
    チャンネルドライバにstderrを指定する。
/.env
LOG_CHANNEL=stderr
  • デフォルトのドライバを指定するパターン
    他のドライバを内部で複数ラッピングできるので運用上こちらの方が便利。
    • チャンネルドライバにstackを指定する。
    • stackのドライバ指定にstderrを追加する。
/.env
LOG_CHANNEL=stack
/config/logging.php
...
    'channels' => [
        'stack' => [
            'driver' => 'stack',
            'channels' => ['single', 'stderr'],
            'ignore_exceptions' => false,
        ],
...

php-fpm設定

Laravelの設定を行なっても標準出力されず、phpの設定なども行なってみたができず。。。
はっきりしたソースが見当たらなかったが、Laravelはアプリケーションサーバがphp-fpmの場合は、php-fpm経由で標準出力するらしい。
(他のアプリケーションサーバーは知りません。。。)

  • php-fpm設定ファイルwww.confに以下の設定をする。
www.conf
catch_workers_output = yes # 標準出力を可能にする
decorate_workers_output = no # php-fpmがログ出力時に吐くゴミ接頭辞を出さない

以上で、無事標準出力にエラーを出力することができた
しかし、decorate_workers_outputパラメータはphp7.3以降が有効だとのことなので、それ以前はどやって対応していたのだろう。。。
ゴミも出力することを許容せざるを得なかったのか

5
7
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
5
7