我正在使用CocoaLumberjack 日志框架2.0.0 进行不同级别的日志记录。在我的 Prefix.pch 中(我知道这个文件已被弃用,但它应该可以工作)我包括 Cocoalumberjack 并按照此处的建议设置全局日志级别:
#ifdef DEBUG
static const DDLogLevel ddLogLevel = DDLogLevelDebug;
#else
static const DDLogLevel ddLogLevel = DDLogLevelWarn;
#endif
我有DDLogVerbose
一些方法的声明,默认情况下不应该记录。问题:但是,他们正在被记录。
检查ddLogLevel
init 函数中的 00001111,它等于DDLogLevelDebug
. 然而,在此之后直接执行一个详细的日志记录语句。(1)
预处理行DDLogVerbose(@"I AM VERBOSE")
显示此代码:
do {
if(DDLogLevelVerbose & DDLogFlagVerbose)
[DDLog log : __objc_yes
level : DDLogLevelVerbose
flag : DDLogFlagVerbose
context : 0
file : "....m"
function : __PRETTY_FUNCTION__
line : 59
tag : ((void *)0)
format : (@"I AM VERBOSE")];
} while(0);
这意味着,预处理后的 LogLevel 是 Verbose。(2)我发现这个级别是 CocoaLumberjack 中的默认级别,以防万一,没有定义日志级别:
#ifndef LOG_LEVEL_DEF
#ifdef ddLogLevel
#define LOG_LEVEL_DEF ddLogLevel
#else
#define LOG_LEVEL_DEF DDLogLevelVerbose
#endif
#endif
但是:调试这表明第一个路径被执行,即LOG_LEVEL_DEF
(根据语句的级别检查以确定是否应该记录它)被分配了正确的级别(调试)。
问题:我没有发现,为什么(1)显示 LogLevel Debug并且在预处理后切换到Verbose (2)。这可能是包含标题的顺序问题吗?还是我错过了一些重要的点?