EC-CUBEでのログ確認方法とデバッグ時のログ出力設定について解説します。トラブル発生時に適切なログを確認することで、問題解決がスムーズになります。

ログファイルの場所

EC-CUBEのログはvar/log/ディレクトリに出力されます。src/Eccube/Log/Logger.phpでアクセス元に応じてログファイルが分かれます。

var/log/
├── front.log      # フロント画面のログ
├── admin.log      # 管理画面のログ
└── site.log       # その他(CLI等)のログ

src/Eccube/Log/Logger.phpの実装:

public function log($level, $message, array $context = [])
{
    if ($this->context->isAdmin()) {
        $this->adminLogger->log($level, $message, $context);  // admin.log
    } elseif ($this->context->isFront()) {
        $this->frontLogger->log($level, $message, $context);  // front.log
    } else {
        $this->logger->log($level, $message, $context);       // site.log
    }
}

ログ出力方法(グローバル関数)

EC-CUBEではsrc/Eccube/Resource/functions/log.phpで定義されたグローバル関数を使用します。

// 情報ログ
log_info(カート明細操作開始, [product_class_id => $productClassId]);

// エラーログ
log_error(決済処理でエラー発生, [order_id => $orderId, error => $e->getMessage()]);

// デバッグログ(開発時のみ出力)
log_debug(変数の中身, [data => $data]);

// 警告ログ
log_warning(在庫が少なくなっています, [product_id => $productId]);

実際の使用例(CartController.php:201):

log_info(カート明細操作開始, [operation => $operation, product_class_id => $productClassId]);

ログレベル

log.phpで提供される関数(PSR-3準拠):

  • log_emergency() – システム使用不能
  • log_alert() – 即時対応が必要
  • log_critical() – 致命的エラー
  • log_error() – エラー
  • log_warning() – 警告
  • log_notice() – 注意
  • log_info() – 情報
  • log_debug() – デバッグ

プラグイン用ログ

プラグイン専用のログファイルに出力したい場合はlogs()関数を使用します。

// プラグイン専用チャンネルでログ出力
logs(plugin)->info(プラグイン処理開始);

デバッグログの有効化

app/config/eccube/packages/dev/monolog.ymlでログレベルを設定できます。本番環境ではprod/monolog.ymlを確認してください。

monolog:
    handlers:
        main:
            type: fingers_crossed
            action_level: error      # errorレベル以上でログ出力
            handler: buffered

開発時にdebugレベルも出力したい場合は.envAPP_ENV=devに設定します。

ログのローテーション

app/config/eccube/packages/prod/monolog.ymlmax_files: 60が設定されており、60日分のログが保持されます。

まとめ

EC-CUBEではlog_info()などのグローバル関数でログを出力するのが標準的です。トラブル時はvar/log/配下の該当ログファイルを確認しましょう。

日本発!ECオープンプラットフォーム「EC-CUBE」 EC-CUBEゴールドパートナー EC-CUBEは株式会社イーシーキューブの商標です

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


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

    EC-CUBEバージョンアップ