EC-CUBEでは標準でfront.log、admin.log、site.logの3種類のログが出力されますが、プラグインやカスタマイズ用に独自のログファイルを追加することができます。
標準のログ構成
app/config/eccube/packages/monolog.ymlでチャンネルが定義されています。
monolog:
channels: [\"front\", \"admin\"]
これに対応するハンドラがprod/monolog.ymlで設定され、front.log、admin.logに出力されます。
カスタムログチャンネルの追加
app/config/eccube/packages/に新しいyamlファイルを作成します。
1. チャンネルとハンドラを定義
app/config/eccube/packages/custom_log.yamlを作成:
monolog:
channels: [\"payment\"]
handlers:
payment:
type: rotating_file
max_files: 60
path: \"%kernel.logs_dir%/%kernel.environment%/payment.log\"
level: debug
channels: [\"payment\"]
2. ログを出力する
logs()関数でチャンネルを指定してログを出力します。
// payment.logに出力される
logs(\"payment\")->info(\"決済処理開始\", [\"order_id\" => \$orderId]);
logs(\"payment\")->error(\"決済エラー\", [\"error\" => \$e->getMessage()]);
プラグインでの利用例
プラグインの場合はapp/Plugin/YourPlugin/Resource/config/services.yamlで定義することもできます。
monolog:
channels: [\"your_plugin\"]
handlers:
your_plugin:
type: rotating_file
max_files: 30
path: \"%kernel.logs_dir%/%kernel.environment%/your_plugin.log\"
level: info
channels: [\"your_plugin\"]
ハンドラの種類
rotating_file– 日付でローテーション(推奨)stream– 単一ファイルに出力fingers_crossed– エラー発生時のみ出力
設定例:エラー時のみ出力
monolog:
channels: [\"payment\"]
handlers:
payment:
type: fingers_crossed
action_level: error
handler: payment_file
channels: [\"payment\"]
payment_file:
type: rotating_file
max_files: 60
path: \"%kernel.logs_dir%/%kernel.environment%/payment.log\"
level: debug
fingers_crossedを使うと、通常時はログを出力せず、エラー発生時にそれまでのログもまとめて出力されます。
キャッシュクリア
設定ファイルを追加・変更した後はキャッシュクリアが必要です。
bin/console cache:clear --no-warmup
bin/console cache:warmup
まとめ
EC-CUBEではMonologのチャンネル機能を使って、用途別に独自のログファイルを作成できます。決済処理、外部API連携、バッチ処理など、トラブルシューティングしやすいようにログを分けておくと運用が楽になります。
EC-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。
EC-CUBEゴールドパートナー