저는 현재 우리 고유의 로깅 솔루션에서 우리 프로젝트 중 하나 인 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()'을 사용하지 않습니까? –
그냥 var_export()도 사용할 수 있습니다 –