2011-03-16 3 views
0

MVC 프레임 워크없이 Zend_Log와 다른 필수 클래스를 사용하고 있습니다. Zend의 로깅 기능 (및 앞으로의 다른 모듈)을 내 사용자 정의 클래스에 추가하고 최선의 방법이 무엇인지 궁금합니다.커스텀 클래스에서 Zend_Log 사용

는 지금은 그래서 아마도, 내가 세계적으로 액세스 할 수 젠드 로거에 대한 래퍼가 있습니다

My_log::log('Testing', Zend_Log::INFO); 

는 내가 기록 할 내 클래스의 각 메소드에이 코드를 추가해야합니까? 수업 시간에 로그를 만들어야하지 않습니까? 더 똑똑한 방법이 있습니까? 앱이 통합 될 수있는 경우

내가 도움을 주셔서 감사합니다, DC

+0

$this->getLogger()->error('...');

예술을 할 수 있습니다. 하지만 나는 또한 하나의 장소에서 많은 다른 애플 리케이션 인스턴스에서 로그 서버에 로깅 SOAP 호출이 :( –

답변

0

의존성 주입 컨테이너는 훌륭한 솔루션처럼 보인다. 모든 정적 호출은 테스트 환경에서 문제를 일으 킵니다.

이 문서 내가 유일한 점은 이제 쉽게 가짜 인스턴스를 반환받을 수 있도록 테스트 environemnt을 고칠 수있을 것입니다 My_Log::get()->error("message"); 같은 정적 게터를 만들 것 http://components.symfony-project.org/dependency-injection/trunk/book/04-Builder

최악의 경우를 바라 볼 수 있습니다. 모든 My_Log 요구는 setLogger($logger)이며 정적 인스턴스를 모의 또는 기타로 대체합니다. 어떤 방식 으로든 정적 호출은 좋지 않습니다./가능한 경우 클래스를 분리하여 가능한 한 적은 클래스에 의존하도록하십시오. 로거를 직접 클래스 생성자에 삽입하는 것이 더 좋습니다. 당신이 게으른 로딩 getLogger()을 제공 할 수 MVC 액션 플러그인 또는 기본 컨트롤러가있는 경우 그래서 당신의 코드는 로그의 개념은 지금, 너무 날 귀찮게한다