Ticket #1395 (closed 改善提案: 修正済)
フロント用のアプリログ出力関数
Reported by: | habu | Owned by: | habu |
---|---|---|---|
Priority: | 低 | Milestone: | EC-CUBE2.11.2 |
Component: | フロント | Version: | 2.11.1 |
Keywords: | Cc: | ||
修正済み: | yes |
Description (last modified by habu) (diff)
管理画面のアプリケーションログは、GC_Utils_Ex::gfPrintLog 関数で出力できるが、
フロント画面のアプリログ出力は、専用の関数が無く、以下の様にして出力するしかない。
GC_Utils_Ex::gfPrintLog("ログメッセージ", CUSTOMER_LOG_REALFILE );
会員ID等を付与してログ出力する、フロント画面用のアプリログ出力関数が欲しい。
#また、簡便にフロントのアプリログを出力できる様になれば、
ソース中にログ出力箇所も増えていき、
不具合発生時の調査(トレース)が行い易くなるものと期待される。
関連チケット: #149
Change History
comment:1 follow-up: ↓ 4 Changed 13 years ago by habu
- Owner changed from somebody to habu
- 修正済み set
- Status changed from new to assigned
comment:2 Changed 13 years ago by habu
出力されるログのフォーマットは以下の通りです:
(顧客IDは、LC_Page::log()を利用した場合のみ出力)
日時 [呼び出しファイルパス] クラス名::関数(行数) メッセージ user=顧客ID from 接続元IPアドレス
実例:
お届け先指定時のログ
2011/07/04 16:47:01 [html/shopping/deliv.php] LC_Page_Shopping_Deliv::registerDeliv(116) register deliv. deliv_check=15 user=6 from 192.168.1.171
注文完了時のログ
2011/07/04 16:47:19 [html/shopping/confirm.php] SC_Helper_Purchase::completeOrder(160) order complete. customerId=6 from 192.168.1.171
comment:4 in reply to: ↑ 1 ; follow-up: ↓ 5 Changed 13 years ago by Seasoft
便利そうですね。LC_Page_Admin#log も実装があると、スマートかなと感じました。
若干懸念しているのは、customer.log を使い回している点です。こちらはオブザベーションログ的な役割があるのかと思っています。(実際のところよく解っていませんが…) トレース・デバッグ用途としては、front.log や admin.log といった分かりやすいものを追加しても良さそうと感じました。
comment:5 in reply to: ↑ 4 Changed 13 years ago by habu
Seasoft への返信
便利そうですね。LC_Page_Admin#log も実装があると、スマートかなと感じました。
確かにそうですね! r21027 , r21028 にて実装しました。
若干懸念しているのは、customer.log を使い回している点です。こちらはオブザベーションログ的な役割があるのかと思っています。(実際のところよく解っていませんが…) トレース・デバッグ用途としては、front.log や admin.log といった分かりやすいものを追加しても良さそうと感じました。
こちらも、仰る通りですね。 出力先を site.log に変更しました。 (site.logは、管理画面からも確認できるためです)
管理画面から設定できる項目をひとつ増やしても良いものか悩んだので、 とりあえず、管理画面もフロント画面も同じログに出力する様にしています フロント画面のログを別ファイルにしたい場合に、変更しやすい作りにはしています。
r21013 でとりあえず実装してみました。
バックトレースから、 ログ出力関数呼び出し元のクラス名・関数名・行数を取得して メッセージの前に自動で付与する様にしています。
でログ出力できます。
また、LC_Pageクラスを継承しているクラス内では、
でログ出力できます。
この場合、ログイン中ユーザの顧客IDも含めてログ出力します。