みなさん、こんにちは、
IDSの波多野です。

前回に引き続き、今回はEC-CUBE 3系、および4系のログ出力処理についてお話したいと思います。

ログ出力で利用する関数

  • log_emergency
    システムは使用不可
  • log_alert
    直ちにアクションを起こす必要あり
  • log_critical
    致命的な条件
  • log_error
    エラーを発生する条件
  • log_warning
    警告を発生する条件
  • log_notice
    通常の動作だが、特徴的な条件
  • log_info
    情報を与えるメッセージ
  • log_debug
    デバッグ用のメッセージ

EC-CUBE 3系と4系では、ログ管理フレームワークであるMonologが使われています。表示レベルの定義はPHP標準の関数であるsyslogと共通です。

参照: Seldaek/monolog: Sends your logs to files, sockets, inboxes, databases and various web services
     https://github.com/Seldaek/monolog
     PHP: syslog - Manual
     https://www.php.net/manual/ja/function.syslog.php

EC-CUBEのプログラム内で呼ばれるのは、ほとんどが log_info になります。

ログの出力先は3系と4系で若干異なります。以下の通りです。
YYYY-MM-DDは、ログの出力日付と置き換えてください。

3系

  • 管理画面: {EC-CUBEディレクトリ}/app/log/admin_site_YYYY-MM-DD.log
  • フロント: {EC-CUBEディレクトリ}/ap/log/front_site_YYYY-MM-DD.log

4系

  • 本番環境の場合
     管理画面: {EC-CUBEディレクトリ}/var/log/prod/admin-YYYY-MM-DD.log
     フロント: {EC-CUBEディレクトリ}/var/log/prod/front-YYYY-MM-DD.log
  • 開発環境の場合
     管理画面: {EC-CUBEディレクトリ}/var/log/dev/admin-YYYY-MM-DD.log
     フロント: {EC-CUBEディレクトリ}/var/log/dev/front-YYYY-MM-DD.log

最後に、注文完了時に出力されるログを見てみましょう。
(実際は、この他に決済処理や受注メール等に関するログも出力されますが、比較のために注文完了に関するもののみ抜粋しています)

3系

[2020-09-04 19:02:36,020363] front.INFO  [1073876c] [87648dba] [1] [ShoppingController:complete:355] - 購入処理完了 [10]  [GET, /index.php/shopping/complete, 127.0.0.1, http://127.0.0.1/index.php/shopping, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36]

4系

[2020-09-04 19:01:47] front.INFO [ed0b6cee] [2b0877d] [2] [Eccube\Log\Logger:log:66] - [注文処理] 注文処理が完了しました. 購入完了画面へ遷移します. [1] [POST, /ec-cube/index.php/shopping/checkout, 127.0.0.1, http://127.0.0.1/ec-cube/index.php/shopping/confirm, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36]

おおまかに、出力内容は

  • 実行時刻
  • チャネル名(front、admin 等)
  • ログレベル(DEBUG、INFO 等)
  • セッションID
  • ユニークID(サーバ実行時に生成されるuniqid)
  • クラス名、関数名、ログ出力行番号
  • メッセージ(「購入処理完了」等)
  • context(メッセージ出力時のオプション)
  • extra(Monologの機能であるProcessorを用いてログの拡張を行った場合、Processorによって渡された出力内容)
  • HTTPメソッド
  • ログ呼び出し時のURL
  • ユーザのIPアドレス
  • HTTPリファラー
  • ユーザエージェント

以上になります。

参照: ログ出力設定 | EC-CUBE 3.0 開発ドキュメント
    https://doc.ec-cube.net/guideline_log

今後の開発作業、バグ調査等の際に、どうぞお役立てください。

以上、最後までお読みいただきありがとうございました。