2014-07-23 1 views
1

프로젝트를 완료하려고하는데 로그인을 추가하고 싶습니다. 시장에서 사용할 수있는 좋은 로거가 있다는 것을 알고 있습니다 (CocoaLumberjack). 그러나이를 위해서는 각 메소드에 log 문을 추가해야합니다. 프로젝트가 완료 될 때 많은 방법이 있습니다. 그래서, 거기에 어떤 방법이나 주위에 있습니까? 모든 메소드에 로그 문을 추가하지 않고도 모든 중앙 위치에 추가하면 모든 것이 작동합니다.NSLog 또는 모든 로깅 문을 모든 방법에 추가하는 쉬운 방법이 있습니까?

모든 메서드보다 먼저 호출되는 Objective-C 런타임 기능이 있는지 확실하지 않습니다.

이 방법은 내가 새로운 사람이거나 새로운 개발자가 새로운 방법을 쓰는 등의 모든 경우에 유용합니다. 그러면 로그 문을 추가하는 것을 기억할 필요가 없습니다.

편집 :

이것은 단지 디버깅 목적을위한 것입니다. 그리고 특정 수준의 세부 사항을 끄고 인쇄하는 것과 같은 로그를 제어하는 ​​방법을 추가 할 것입니다.

+0

방법을 훑어 보셨습니까? –

답변

5

하지 마십시오. 진지하게. 사용자는 수다스러운 소프트웨어로 인해 로그 파일이 가득 차는 것에 감사를 느끼지 않으며, 실제로 중요한 메시지를 모호하게하여 다른 모든 개발자를 괴롭 히게됩니다.

디버깅 중에 절대적인 최후의 수단으로 NSLog()만을 사용해야합니다. 그렇더라도 더 나은 접근법이 있습니다 (예 : dtrace을 사용할 수 있습니다.) objc_msgSend() 호출을 모두 덤프하면 objc_msgSendStret()을 통과하는 호출과는 별도로 거의 모든 메소드 호출이 표시되고 해당되는 경우 부동 소수점 호출도 표시됩니다 귀하의 플랫폼). 당신이 정말 수다스러운 신청을해야하는 경우

, 자신의 로그 파일을 만들 쓰기 (이상적으로 asl를 사용하여) 자신의 로깅 기능을, 그리고 예를 들어, 제어 할 수있는 일련의 플래그를 가지고 그렇다하더라도 좋은 생각 다른 종류의 디버그 출력을 가능하게하는 사용자 기본값으로부터.

+0

개인 로그 파일에 기록하는 방법은 무엇입니까? 확실히 그건 무리가 아니야? – trojanfoe

+0

그게 그가 말한거야. +1 왜냐하면 나는이 문맥에서 '수다스러운'이라는 단어를 좋아하기 때문입니다. 그리고 수다스러운 애플리케이션은 싫다. – Akaino

+0

@trojanfoe 나는 그것을 커버했다고 믿는다 :-) – alastair

1

이 재정의를 사용하는 NSObject 카테고리는 어떻습니까?

-(BOOL)respondsToSelector:(SEL)aSelector { 
    printf("Excessive Log: %s\n", [NSStringFromSelector(aSelector) UTF8String]); 
    return [super respondsToSelector:(aSelector)]; 
} 
+0

'-respondsToSelector :'는 objc_msgSend에 의해 호출되지 않습니다. –

+0

이것을 수업 중 하나에 넣고 달리고 지켜보십시오. OP가 원하는만큼 충분합니다. – Mundi

관련 문제