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