1

我使用 Lumberjack 作为我的日志框架。

我有这个定义……</p>

#ifdef DEBUG
static const int ddLogLevel = LOG_LEVEL_DEBUG;
#else
static const int ddLogLevel = LOG_LEVEL_WARN;
#endif

这是我的日志声明……</p>

DDLogInfo(@"Starting");

但是,当我查看 Console.app 时,它会将此消息显示为警告,而不是像 ASL 那样显示的信息。还有什么我需要做的吗?

这确实允许在不处于 DEBUG 模式时不记录该语句,因此它可以像宣传的那样工作。

4

1 回答 1

1

这是预期的行为。DDASLLogger 将调试映射到 ASL 的警告级别、信息到错误等。这是因为默认情况下,ASL 将过滤通知级别及以上。

(如果 DDLogInfo 打印警告,那么您使用的是旧版本的 CocoaLumberjack)

苹果系统日志文档说:

默认过滤器掩码是 ASL_FILTER_MASK_UPTO(ASL_LEVEL_NOTICE)。这意味着默认情况下,在没有远程控制更改的情况下(如下所述),ASL_LEVEL_DEBUG 和 ASL_LEVEL_INFO 优先级消息不会发送到服务器。

您可以尝试编写自己的自定义 ASL 记录器。
但我建议您向 ASL 记录器添加一个自定义格式化程序,以添加实际的日志级别(更快的方法)。

于 2014-03-10T07:10:24.437 回答