3
我目前正在從我們自己的專有日誌解決方案轉移到我們項目之一的log4php。我們自己的解決方案有一個幫助方法,我在下面發佈。該方法的目的是將變量的內容(以及它的任何成員遞歸)寫入日誌。如何用log4php實現「對象傾銷」?
這個方法在log4php中的等價位置應該是Logger類(我假設)。但是我想知道集成這些功能的正確方法。
我應該從Logger中派生並擴展它嗎?或者有沒有辦法「插入」這個功能。
在此先感謝。
/**
* Dump the complete content of the target object to the log.
*
* @param mixed $target The object to dump.
* @param int $level The verbosity level.
* @param int $indent Indentation level.
*/
public static function dump($target, $level = Logging::eDEBUG, $indent = 0) {
if($level < self::getInstance()->logLevel) return;
if(null == $target) {
self::log("d", "> " . str_repeat("\t", $indent) . "null", $level);
return;
}
if(is_string($target) || is_numeric($target)) {
self::log("d", "> " . str_repeat("\t", $indent) . $target, $level);
return;
}
foreach($target as $key => $value) {
if(is_array($value)) {
self::log("d", "> " . str_repeat("\t", $indent) . $key . " -> Array (", $level);
self::dump($value, $level, $indent + 1);
self::log("d", "> " . str_repeat("\t", $indent) . ")", $level);
continue;
}
if(is_object($value)) {
self::log("d", "> " . str_repeat("\t", $indent) . $key . " -> Object (", $level);
self::dump((array)$value, $level, $indent + 1);
self::log("d", "> " . str_repeat("\t", $indent) . ")", $level);
} else {
self::log("d", "> " . str_repeat("\t", $indent) . $key . " -> " . $value, $level);
}
}
}
爲什麼不使用'print_r()'? – 2011-05-14 16:36:52
您也可以使用var_export() – 2011-05-14 16:44:22