DDLog.h
파일의 답변을 찾았습니다. Lumberjack에는 비동기식 및 동기식 로깅이라는 개념이 있습니다. 처음 읽으면서, 그것이 무엇을 위해 있었는지에 관해 나를 치지 않았다.
기본적으로 로그 명령문을 순서대로 출력하려면 동기화를 수행해야합니다 (단, 마이크가 언급했듯이 성능이 저하됩니다). 따라서 디버깅 상황에서만이 작업을 수행해야합니다. 이상적으로, 나는 다른 헤더와/또는 다른 전 처리기 매크로를 넣어 스위치가 동기식으로 뒤집 히지 않도록해야한다.
- 열기까지
DDLog.h
- 이동
#define LOG_ASYNC_ENABLED YES
와 라인 : 다음은 무엇입니다. 이 항목을 한 지점에서 NO
으로 변경하여 동기식 로깅을 수행하거나 다음 단계에서 개별 레벨을 변경할 수 있습니다.
헤더가 DDLog.h 파일 자체를 변경하는 것을 방지합니다. 따라서 Lumberjack 위키 페이지 link의 지침에 따라 다른 헤더 파일을 사용하여 이러한 재정의 사용자 정의를 명확하게 설명하는 방법을 설명합니다.
#import "DDLog.h"
#import "DDASLLogger.h"
#import "DDTTYLogger.h"
// ========================= Overrides ========================================
// --> per https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomLogLevels
// ----------------------------------------------------------------------------
// Are we in an optimized (i.e. Release) build?
#ifdef __OPTIMIZE__
// YES: Nothing to do from the default. (You could simplify this by using #ifndef above instead)
#else
// NO: We're in a Debug build. As such, let's configure logging to flush right away.
// Undefine the asynchronous defaults:
#undef LOG_ASYNC_VERBOSE
#undef LOG_ASYNC_INFO
#undef LOG_ASYNC_WARN
// Define the logs levels to be synchronous:
#define LOG_ASYNC_VERBOSE (NO && LOG_ASYNC_ENABLED) // Debug logging will be synchronous
#define LOG_ASYNC_INFO (NO && LOG_ASYNC_ENABLED) // Info logging will be synchronous
#define LOG_ASYNC_WARN (NO && LOG_ASYNC_ENABLED) // Warn logging will be synchronous
#endif
감사합니다. Mike. 이것은 합리적인 가정이었다. 불행하게도 작동하지 않았습니다. stdout 플러시도 시도했지만, 그 중 하나가 작동하지 않았다 (어떤 의미가 - 전체 방법 stderr 출력을 구축하는 것 같다). – idStar