我已经开始使用CocoaLumberjack并有兴趣使用它们的自定义日志级别功能。他们有一个方便的配置可在https://github.com/CocoaLumberjack/CocoaLumberjack/wiki/CustomLogLevels让你开始。我不知道我现在想要什么,所以我就这样离开了。CocoaLumberjack自定义日志级别
接下来,我用这个把我的调试级别在我的代码...
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 )。 32是YES,因此失败(使用NOT)。所以我会认为这个消息会被记录下来。将日志方法移至DDLogInfo(),该日志方法的消息标志为010000(16)。这仍然是,因此不符合,因此我们得到记录。但我在这种情况下看到它。有人对此有经验吗?
我刚刚在测试这个我自己的项目使用伐木工人,我可以确认它的工作原理就像你期望的那样。如果我将级别设置为'LOG_LEVEL_WARN',然后我看到所有的警告和以上。如果我将它设置为'LOG_LEVEL_INFO',我会看到所有信息及以上。您是否添加了任何额外的代码来自定义/更改日志级别? –
@JamesFrost,唯一的修改是使用CL的“MYLog.h”,该链接位于上面的链接处。我切换回正常的处理,它确实工作正常。它们如何为其“自定义”级别创建位掩码一定是个问题。 – rob5408