首先,您能否更新您的问题以显示您正在使用的 DDLog* 调用?这可以帮助确认您使用的东西实际上会被正确记录(或不正确)。
其次,您的一些示例日志显示在发布模式下的调用也可能有所帮助——特别是显示它们来自哪些类实例。
那么,您只使用 DDLog inGeneratrTableViewController.m
吗?您所拥有的将仅在GeneratrTableViewController.m
. (我假设这就是我正在查看的内容,基于代码的样子。)如果您在任何其他文件中使用 DDLog* 调用,它将使用那里的默认日志级别。
更新
好的,您的更新帮助我了解了您的位置。您不应该为每个班级都进行这样的设置。
首先,在全局范围内执行,将类似以下内容添加到您的预编译头文件中——不是每个文件,也不是头文件——
#ifdef DEBUG
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-variable"
static int ddLogLevel = LOG_LEVEL_DEBUG;
#pragma clang diagnostic pop
#else
static const int ddLogLevel = LOG_LEVEL_WARN;
#endif
#pragma 不会对未使用的变量发出警告,这会掩盖在您处于调试中的极端情况下出现的警告,但由于缺少日志记录,该变量恰好没有被使用。这里调试模式下的非常量很重要——如果你想覆盖每个类的级别,你需要能够改变它。但这必须动态发生。
对于您可能想要覆盖日志记录设置的每个类,您需要类似以下内容(并且仍将上述内容添加到您的预编译头文件中)。
+ (void)initialize
{
[self ddSetLogLevel:LOG_LEVEL_VERBOSE];
}
+ (int)ddLogLevel
{
return LOG_LEVEL_VERBOSE;
}
+ (void)ddSetLogLevel:(int)logLevel
{
ddLogLevel = logLevel;
}
我倾向于将我的全局级别保持在 DEBUG(在 DEBUG 模式下)。然后,当我积极开发它们并自由使用 DDLogVerbose 时,我将上面的代码直接添加到类中。然后,当主开发完成后,我将其包装起来,#if 0/#endif
以便稍后轻松添加;更改全局设置也可以正常工作。