ios Logger in app and extension
Пытаюсь логировать действия в приложении и в расширении PacketTunnelProvider, использую для логирования CocoaLumberjack. Настройка в приложении:
func setupLogger() {
let appGroup = "group.some"
let containerUrl = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: appGroup)
let logsDirectory = containerUrl?.path
let logFileManager = DDLogFileManagerDefault(logsDirectory: logsDirectory)
let fileLogger = DDFileLogger(logFileManager: logFileManager)
fileLogger.rollingFrequency = 60 * 60 * 24 // 24 hours
fileLogger.logFileManager.maximumNumberOfLogFiles = 7
DDLog.add(DDOSLogger.sharedInstance)
DDLog.add(fileLogger)
DDLogInfo("Run application \(Date())")
}
Настройка в расширении:
- (void) setupLogger {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *containerUrl =
[fileManager containerURLForSecurityApplicationGroupIdentifier:@"group.some"];
id<DDLogFileManager> logFileManager =
[[DDLogFileManagerDefault alloc] initWithLogsDirectory:containerUrl.path];
_fileLogger = [[DDFileLogger alloc] initWithLogFileManager:logFileManager];
_fileLogger.rollingFrequency = 60 * 60 * 24; // 24 hour rolling
_fileLogger.logFileManager.maximumNumberOfLogFiles = 7;
[DDLog addLogger:_fileLogger];
[DDLog addLogger:[DDOSLogger sharedInstance]];
}
Проблема: логи из расширения не сохраняются, когда их читаю есть только логи для приложения. Оставлял включенным только логи для расширения в итоге - ни одного файла не было создано по пути containerUrl. Дебажил расширение, в консоль логи добавляются, проверил путь - один и тот же, в настройках проекта указан один и тот же app group, не могу понять в чем причина. Можете подсказать ?
Как читаю логи:
let appGroup = "group.some"
let containerUrl = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: appGroup)
let logsDirectory = containerUrl?.path
let logFileManager = DDLogFileManagerDefault(logsDirectory: logsDirectory)
let ddFileLogger = DDFileLogger(logFileManager: logFileManager)
let logFilePaths = ddFileLogger.logFileManager.sortedLogFilePaths
print("paths=\(logFilePaths)")
guard let logPath = logFilePaths.first else { return }
let url = NSURL.fileURL(withPath: logPath)
let activityViewController = UIActivityViewController(activityItems: [url], applicationActivities: [])
activityViewController.popoverPresentationController?.sourceView = self.view
self.present(activityViewController, animated: true) {
ProgressHUD.dismiss()
}