Ana içeriğe geç

Günlükleri Dışa Aktarma

Saklanan dosya veya XLFacility günlüklerini dışa aktarın ve oluşturulan dosya URL'lerini uygulamanızdan paylaşın.

Ön Koşullar

  • Etkin hedef .file veya .xlfacility değeridir.
  • .xlfacility seçildiğinde XLFacility eklentisi kuruludur.
  • En az bir saklanan günlük vardır.

API Reference

Framework

AIBudsLog.xcframework

Declaration

Swift
/// Exports all retained logs to one file.
/// - Parameter completion: Called with the exported path, optional beginning
///   and ending timestamps, and an error.
func exportLogs(_ completion: ((
                    _ filePath: String?,
                    _ logStartFrom: Date?,
                    _ logEndAt: Date?,
                    _ error: NSError?
                ) -> Void)?)

/// Exports retained logs to size-limited files.
/// - Parameters:
///   - maxFileSize: Maximum size of each exported file, in bytes.
///   - completion: Called with exported paths, optional beginning and ending
///     timestamps, and an error.
func exportLogs(_ maxFileSize: UInt64,
                   completion: ((
                       _ filePaths: [String]?,
                       _ logStartFrom: Date?,
                       _ logEndAt: Date?,
                       _ error: NSError?
                   ) -> Void)?)

İki işlem de LogService tarafından tanımlanır ve logService üzerinde çağrılır.

Kullanım Örnekleri

Tek Dosya Dışa Aktarma

Swift
AIBudsLogSDK.logService.exportLogs { filePath, startDate, endDate, error in
    DispatchQueue.main.async {
        if let error {
            print("Export failed: \(error.localizedDescription)")
            return
        }

        guard let filePath else {
            print("Export completed without a file")
            return
        }

        print("Log range: \(String(describing: startDate)) — \(String(describing: endDate))")
        presentShareSheet(items: [URL(fileURLWithPath: filePath)])
    }
}

Boyutu Sınırlı Dosyalar Dışa Aktarma

Swift
let fiveMegabytes: UInt64 = 5 * 1_000_000
AIBudsLogSDK.logService.exportLogs(fiveMegabytes) { paths, _, _, error in
    guard error == nil, let paths, !paths.isEmpty else { return }
    let URLs = paths.map(URL.init(fileURLWithPath:))
    DispatchQueue.main.async { presentShareSheet(items: URLs) }
}

Notlar

  • maxFileSize bayt cinsindendir. Demo, ondalık megabaytı MB başına 1_000_000 bayt kullanarak dönüştürür.
  • .console ve .oslogger dışa aktarmayı desteklemez; günlük toplamadan önce kalıcı bir hedefe geçin.
  • Yollar dönse bile hatayı başarısızlık sayın; boş yol koleksiyonunu dışa aktarma yapıtı yok olarak değerlendirin.
  • UIActivityViewController öğesini ana iş parçacığında gösterin ve iPad'de açılır pencere kaynağını yapılandırın.