微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在 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 举报,一经查实,本站将立刻删除。