您可以在运行时将 CocoaLumberJack 日志记录从异步切换到同步吗?还是强制刷新待处理的写入?

Can you switch CocoaLumberJack logging from asynchronous to synchronous at run time? Or force a flush of pending writes?

提问人:Piepants 提问时间:9/17/2023 更新时间:9/17/2023 访问量:12

问:

我正在使用 CocoaLumberJack 写入日志记录文件,如果应用程序在运行时检测到意外情况,我希望能够附加文件/和/或其内容以在执行期间上传以供分析。

在这种情况下,我希望日志是最新的,并包含可能在几微秒之前写入的所有日志记录。

即给定以下代码:

  DDLogWarn(@"%@", @"Want this line to appear in the file");
  if ([[NSFileManager defaultManager] fileExistsAtPath:logthLocation.path]) {
      NSError* error = nil;
      NSStringEncoding encoding = 0;
      NSString *contents = [[NSString alloc] initWithContentsOfURL:logURL
                                                       usedEncoding:&encoding
                                                              error:&error];

然后,内容字符串将不包含刚才编写的行。

异步/同步写入性质可以在编译时通过设置为 YES 或 NO 来设置#define LOG_ASYNC_ENABLED

但是,为了提高效率,我希望日志记录默认是异步的,但能够在打开文件之前刷新任何待处理的写入。 这可能吗?

ios cocoalumberjack

评论


答:

0赞 Piepants 9/17/2023 #1

[DDLog flushLog] 似乎可以完成这项工作