DDLog.h
我在文件中找到了答案。Lumberjack 具有异步和同步日志记录的概念。在最初的阅读中,我并没有意识到这是为了什么。
基本上,如果您希望日志语句按顺序输出,则需要使其同步(尽管正如 Mike 所说,这会降低性能)。因此,这只能在调试情况下进行。理想情况下,我会将另一个标头和/或其他一些预处理器宏放在一起,以确保我不会让开关处于同步状态。
这是你要做的:
- 打开
DDLog.h
- 转到与 的行
#define LOG_ASYNC_ENABLED YES
。您可以将其更改为NO
在一个位置进行全面同步日志记录,或者您可以在以下几行中更改各个级别。
请注意,标头不鼓励更改 DDLog.h 文件本身。因此,按照 Lumberjack wiki 页面链接上的说明,他们解释了如何使用不同的头文件来表达这些覆盖自定义。
使用它,这是我成功编写和测试的内容,作为我在应用程序的预编译头文件中导入的“MyAppLumberjack.h”头文件:
#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