1
디버깅 목적으로이 코드를 .pch
에 추가했습니다. 출력에 꽤 만족하지만 DLog
정의에서 __FILE__
을 사용할 때 전체 경로없이 파일 이름을 인쇄하는 방법을 개선하고 싶습니다. 내가Objective-C NSLog 변형 : 전체 경로 및 __FILE__없이 날짜 시간없이 출력
[[NSString stringWithUTF8String:__FILE__] lastPathComponent]
을 사용하고
은 아마 당신은 당신이 그것을 할 수있는 청소기/짧은 방법을 제안 할 수 있을까?
#ifdef DEBUG
#define DLog(...) NSLog(@"%@ %d %s %s", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, __PRETTY_FUNCTION__, __FUNCTION__)
#define ALog(...) [[NSAssertionHandler currentHandler] handleFailureInFunction:[NSString stringWithCString:__PRETTY_FUNCTION__ encoding:NSUTF8StringEncoding] file:[NSString stringWithCString:__FILE__ encoding:NSUTF8StringEncoding] lineNumber:__LINE__ description:__VA_ARGS__]
#else
#define DLog(...) do { } while (0)
#ifndef NS_BLOCK_ASSERTIONS
#define NS_BLOCK_ASSERTIONS
#endif
#define ALog(...) NSLog(@"%s %@", __PRETTY_FUNCTION__, [NSString stringWithFormat:__VA_ARGS__])
#endif
UPDATE는 가능하면 나는 또한 날짜 및 응용 프로그램 이름 (i.e. 2012-05-30 16:23:29.795 AppName[11746:12203]
을 제거하고 싶습니다. 어떠한 제안?
제가 생각할 수있는 가장 가까운 것은'printf'입니다. – Eimantas
printf 함수를 사용해 보셨습니까? – Adam
내 C++ 정적 라이브러리와 Objective-C++ 응용 프로그램에서 공유하는 내 자신의 로깅 코드가 있고 모든 클래스와 정적 함수를 정적 함수 char * m_classname으로 유지하는 방법을 사용했습니다. 메소드 이름은'__FUNCTION__'을 사용하여 제공됩니다. 잘 작동합니다. – trojanfoe