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オープンプラットフォーム「EC-CUBE」 EC-CUBEゴールドパートナー EC-CUBEは株式会社イーシーキューブの商標です

EC-CUBEに関するお問い合わせ


    [重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。

    EC-CUBEバージョンアップ