objective-c - CocoaLumberjack 未登录 iOS 中的后台线程

标签 objective-c cocoa-touch logging grand-central-dispatch

我在我的项目中使用 CocoaLumberjack 日志框架,我注意到的奇怪的事情之一是它不记录我的代码中后台线程上的语句。据我检查,它与 ddLogLevel 有关。

我在AppDelegate.h中定义它:

extern const int ddLogLevel;

然后在AppDelegate.m中:

const int ddLogLevel = LOG_LEVEL_VERBOSE;

如果我在主线程上记录一些内容,它就会起作用。但是,在后台线程上,如下所示,只有当我在内部声明 int 时它才有效,但我不想这样做。

- (void)fetchNumberofTotalItems {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        int ddLogLevel = LOG_LEVEL_VERBOSE;
        ...
        DDLogVerbose(@"%@: Fetching total number of items!", [self class]); 
   });
}

如果我删除 int ddLogLevel = LOG_LEVEL_VERBOSE; 行,它将不会记录该行。

有人知道如何让它尊重我在AppDelegate中的变量吗?

最佳答案

我已经解决了我的问题,而且非常简单。

AppDelegate.h中,将extern const int ddLogLevel;替换为:

static const int ddLogLevel = LOG_LEVEL_VERBOSE;

并删除 AppDelegate.m 中的 const int ddLogLevel = LOG_LEVEL_VERBOSE;

之后,#import AppDelegate.h 需要使用日志记录,或者使用 .pch 文件,以便将其导入到每个文件中。

关于objective-c - CocoaLumberjack 未登录 iOS 中的后台线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17887375/

相关文章:

android: 看不到日志输出

c++ - 使用单例模式的简单 C++ 记录器

objective-c - 单击窗口禁用应用程序激活

ios - 使用 NSSet 从 NSMutableArray 中删除重复项

ios - 一个非常简单的应用程序的本地化.. 如何连接按钮?

c# - 配置 Serilog.Extensions.Logging.File

ios - 尝试构建 DisplayCandy 时,终端给我这个错误

ios - TextView 数组到 TableView

objective-c - 有符号的 Char 到 Int

ios - CoreAudio,收集准确数量的样本