CocoaLumberjack 日志级别

CocoaLumberjack log level

我不太明白日志级别是什么意思。

在 Lumbejack 中定义了以下日志级别:

#define LOG_LEVEL_OFF     DDLogLevelOff
#define LOG_LEVEL_ERROR   DDLogLevelError
#define LOG_LEVEL_WARN    DDLogLevelWarning
#define LOG_LEVEL_INFO    DDLogLevelInfo
#define LOG_LEVEL_DEBUG   DDLogLevelDebug
#define LOG_LEVEL_VERBOSE DDLogLevelVerbose
#define LOG_LEVEL_ALL     DDLogLevelAll

其中一些是什么意思?以及它们是如何使用的? 那些与 CocoaLumberjack 相关的都是 iOS 吗?

此外,我在我的 pch 文件中使用了以下代码:

#ifdef DEBUG
static const int ddLogLevel = LOG_LEVEL_VERBOSE;
#else
static const int ddLogLevel = LOG_LEVEL_ERROR;
#endif

这些是什么意思?我在项目中搜索了 ddLogLevel 变量,但没有发现它在任何地方使用过。另外,不在伐木工舱中。

设置 ddLogLevel 过滤来自各种 DDLogXXX 方法的消息。

如果您将 ddLogLevel 设置为 LOG_LEVEL_ALL,那么将记录所有 DDLogXXX 方法。如果将 ddLogLevel 设置为 LOG_LEVEL_INFO,则只会记录 InfoWarningError

看看您显示的 #define 行列表。选择给定值只会产生来自该级别和列表中更高级别的消息。

如果您将 ddLogLevel 设置为 LOG_LEVEL_INFO 并且您有以下两行:

DDLogInfo("some info message");
DDLogDebug("some debug message");

然后只记录第一条消息,因为 Debug 低于 Info

每个级别的实际含义都有些主观。只需在您的应用程序中始终如一地使用它们。最重要或关键的消息应具有最高级别,最不重要的消息应具有较低级别。

当我的应用程序遇到意外值或提供 NSError 参数的方法失败时,我使用 DDLogError。我记录了一条相关消息并包含 NSError 值。

我将 DDLogInfo 用于 "I'm here" 类型的消息。

我使用 DDLogDebug 来记录变量值。

我不经常使用 DDLogWarn,但您可以将它用于没有实际错误但需要注意一些重要事项的意外问题。

这些是不同程度的日志记录粒度。 LOG_LEVEL_ALL 意味着所有日志都将写入 lumberjack 使用的控制台和文件。 LOG_LEVEL_OFF 是没有记录发生的极端的另一端。您可以使用这些来确定为哪个构建显示哪种日志。以下是一些用例示例。

- (void)viewDidLoad
{
    [super viewDidLoad];

    // this log isn't particularly useful for a production build, 
    // but can be helpful when debugging. So we use verbose.
    DDLogVerbose(@"This view controller loaded");
}

- (void)didRecieveMemoryWarning
{
    // This is a bad situation, but it isn't an error really.
    // Just a signal that we need to free up memory. So we use warning.
    DDLogWarning(@"We are using too much memory.");
}

- (void)doSomething
{
    NSError *error;
    [self doSomethingElse:&error];
    if (error) {
        // This is definitely an error we need to handle. If you have to
        // look through crash logs on a production build, you definitely
        // want this log to show up there.
        DDLogError(@"Encountered an error: %@", error);
    }
}

在这些示例中,当您 运行 来自 Xcode 的应用时,所有日志都会显示,但只有错误日志会显示在生产崩溃日志中。 ddLogLevel 常量是您确定所需日志记录级别的方式。