在 Notification Service Extension 中添加日志记录和检索日志

问题描述

我关注了这篇文章 https://github.com/CocoaLumberjack/CocoaLumberjack/issues/439 并且我能够在我的服务扩展类中完成日志记录。这就是我所做的 -

import CocoaLumberJackSwift

override func didReceive(_ request: UNNotificationRequest,withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
let fileManager = FileManager.default
    let appGroupId = Bundle.main.infoDictionary?["APP_GROUP_ID"] as! String
    let containerURL = fileManager.containerURL(forSecurityApplicationGroupIdentifier: appGroupId)
    
    let extensionLogDirectory = containerURL?.appendingPathComponent("AppExtensionLogs").path
    
    let logFileManager = DDLogFileManagerDefault.init(logsDirectory: extensionLogDirectory)
    let fileLogger: DDFileLogger = DDFileLogger.init(logFileManager: logFileManager)
    fileLogger.rollingFrequency = 0
    fileLogger.maximumFileSize = 1 * 1024 * 1024
    fileLogger.logFileManager.maximumNumberOfLogFiles = 2
    DDLog.add(fileLogger)
}

然后使用 DDLogDebug 消息,我可以看到日志记录在此处某处创建的 1 个文件中 -

/private/var/mobile/Containers/Shared/AppGroup/1FF0E277-6CBF-4139-8535-AD18B9CFC164/AppExtensionLogs/

现在有一些关于这个的观察 -

  1. 有时我看到日志被切断,打印两次,这有点令人困惑。
  2. 有时即使创建了日志文件,但我在其中看不到任何日志。

这是我用来检索日志的方法 -

 NSString *appGroupId = [NSBundle mainBundle].infoDictionary[@"APP_GROUP_ID"];
  NSURL *containerPathURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:appGroupId];
    
  NSString* extensionLogDirectory = [[containerPathURL URLByAppendingPathComponent:(@"AppExtensionLogs")] path];
    
  NSArray *directoryContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:extensionLogDirectory error:nil];
  AFDebug(@"Logging Started");
  for (NSString* file in directoryContents) {
    NSString *path = [extensionLogDirectory stringByAppendingPathComponent:file];
    NSString *fileContents = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    AFDebug(@"File contents of %@ \n%@",path,fileContents);
  }
  NSLog(@"Logging Stopped");

有人可以帮我吗??有什么我做错了吗?谢谢!!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...