0

各関数の最後にカスタム エラー ログ/デバッグ関数を呼び出したいと考えています。

例:

  • 電話したいerror_log(__METHOD__);
  • したいecho $query;
  • 実行時間などを表示

そのカスタマイズされた関数を毎回呼び出す必要なく、デバッグ目的ですべての関数の最後に。

とても有難い。

4

2 に答える 2

2

これには、デバッガー/プロファイラーを使用します。たとえば、XDebugまたは Zend Debugger を使用します。

2 つの比較については、次を参照してください。

于 2010-10-20T11:31:12.457 に答える
1

多くのRTMの後、私はdebug_backtrace();それが高価であるにもかかわらず使用しなければなりませんでした。

これが私がそれをした方法です:

// debug(debug_backtrace(),$query);
// $query is optional
define('DEBUG',true);

function debug($trace,$query = null) {
    if(DEBUG) {
        $caller=array_shift($trace);
        error_log("Initiating class: " . $caller['class']);
        error_log("Calling function: " . $caller['function']);
        error_log("In file: " . $caller['file']);
        error_log("@ line: " .$caller['line']);
        if(isset($query))
        {
            error_log("Performing Query: " .$query);
        }
        error_log("---");
    }
   else
       exit();
}

そして、各関数の最後に以下を追加します。

function init_userInfo($ai, $v) {
    $this->user[$ai] = $v;
    debug(debug_backtrace());
}

または、関数にSQLクエリがある場合:

function insertQuery($query)
{
    mysql_query($query)
        or die("MySQL Error: " . mysql_error());
    debug(debug_backtrace(),$query);

}

php_error.logの出力は一般的に次のようになります。

[20-Oct-2010 19:02:07] Initiating class: Db
[20-Oct-2010 19:02:07] Calling function: selectQuery
[20-Oct-2010 19:02:07] In file: /Code/classes/user.class.php
[20-Oct-2010 19:02:07] @ line: 100
[20-Oct-2010 19:02:07] Performing Query: SELECT * FROM user WHERE uid=(3) LIMIT 1
[20-Oct-2010 19:02:07] ---
[20-Oct-2010 19:02:07] Initiating class: User
[20-Oct-2010 19:02:07] Calling function: htmlform_addUserInfo
[20-Oct-2010 19:02:07] In file: /Code/index.php
[20-Oct-2010 19:02:07] @ line: 6
[20-Oct-2010 19:02:07] ---
于 2010-10-20T16:07:42.550 に答える