2011-05-14 6 views
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); 
    } 
    } 
} 
+0

왜'print_r()'을 사용하지 않습니까? –

+2

그냥 var_export()도 사용할 수 있습니다 –

답변

2

이것은 모두 log4php docs에 설명되어 있습니다.

+0

그 섹션을 건너 뛰었어야합니다. 나는 log4php가 암묵적으로 이미 그 작업을 수행 할 것임을 몰랐다. 감사. –

관련 문제