Magento2 の標準ログは monolog の StreamHandler をベースとした Magento\Framework\Logger クラスによって制御されています。
この標準ロガークラスは、ログファイルを追加したり、拡張できたりと、各種拡張方法も公式ドキュメントで案内されています。ファイルでログを扱う分にはこれで不満があることはありません。
Example - logging to a custom log file | Magento 2 Developer Documentation
しかし、Kubernetes 等のコンテナホスティングをするためには、ログを標準出力に流す必要があります。この設定変更は di.xml で上書きする必要があります。
それを行ったサンプルが以下のモジュールです。
kzkick2nd/magento2-stdout-logger
magento2-stdout-logger モジュールを利用する
こちらのモジュール( Docker/
以下)をapp/code/
に設置して有効にするとログが標準出力されるようになります。
行っている内容は monolog StreamHandler のBase クラスで出力先設定を php://stdout
に書き換えて、標準ロガー Magento\Framework\Logger\Monolog のクラスを di.xml で上書きしたものです。
magento2-stdout-logger モジュールの有効化
1.app/code
以下に上書きモジュールを設置します
2.モジュールを有効にします
$ bin/magento module:enable Docker_LogStdout
$ bin/magento setup:upgrade
$ bin/magento cache:clean
※ 公式ドキュメント「モジュールの有効化について」
Enable or disable modules | Magento 2 Developer Documentation
3. ログが標準出力されます(docker-compose logs の例)
このモジュールでは標準出力にフォーマットを揃えず出力しているので、上記では Docker ベースイメージである httpd のログと混ざっています。出力フォーマットはこのモジュール内で調整すると良いでしょう。di.xml による上書き
Magento2 ではコアコードを変更しないで柔軟な拡張性を担保するため、 di.xml によってクラスを上書きする設計となっています。di.xml による Class 上書きについて詳しく知りたい方は以下のチュートリアルを実際にやってみるのが良いでしょう。