我已经开始使用 CocoaLumberjack 并且对使用他们的自定义日志级别功能很感兴趣。他们在https://github.com/CocoaLumberjack/CocoaLumberjack/wiki/CustomLogLevels提供了一个方便的配置来帮助您入门。我不知道我现在到底想要什么,所以我就这样离开了。
接下来我使用这个在我的代码中设置我的调试级别......
static const int ddLogLevel = LOG_LEVEL_DEBUG;
但是,使用此设置时,只会显示比 LOG_LEVEL_DEBUG 严重性更高的消息。这意味着对 DDLogInfo() 及以上的调用会显示,但不会显示 DDLogDebug()。当我向上滑动时也是如此。所以...
static const int ddLogLevel = LOG_LEVEL_INFO;
...忽略 DDLogInfo() 和 DDLogDebug(),但显示 DDLogNotice() 和更高版本。当然,预期的行为将包含该警告级别。
这是 CocoaLumberjack 内部做出决定的代码……
for (DDLoggerNode *loggerNode in loggers) {
// skip the loggers that shouldn't write this message based on the logLevel
if (!(logMessage->logFlag & loggerNode.logLevel)) {
continue;
}
dispatch_group_async(loggingGroup, loggerNode->loggerQueue, ^{ @autoreleasepool {
[loggerNode->logger logMessage:logMessage];
}});
}
在我的第一个示例中,我的日志级别是 111111 (63),消息标志(使用 DDLogDebug())是 100000 (32)。63 & 32 是 YES,所以这会失败(使用 NOT)。所以我认为该消息会被记录下来。将日志方法向上移动到 DDLogInfo(),它的消息标志为 010000 (16)。这仍然是 YES 并且因此以 NOT 失败,所以我们被记录了。但我在这种情况下看到了。有人对此有经验吗?