我已經開始使用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