我正在使用 cocoaLumberjack 日志框架进行 iOS 日志记录。 为了将日志存储在文件中,我使用了此代码。
DDFileLogger* fileLogger = [[DDFileLogger alloc] init];
fileLogger.rollingFrequency = 60 * 60 * 24;
fileLogger.logFileManager.maximumNumberOfLogFiles = 7;
[DDLog addLogger:fileLogger];
DDLogVerbose(@"hello");
NSLog(@"hihihihihi");
我无法找到此代码生成的日志文件的确切存储位置。 有人可以帮我解决这个问题吗?
最佳答案
您可以从连接的设备下载日志文件,也可以直接从应用程序发送。下面介绍了这两种方法。
在 Swift 中通过电子邮件从应用程序发送日志文件
在你引用 DDFileLogger 的类中写下这个。我会把它放在一个自定义记录器类中,例如MyLogger.swift
var ddFileLogger: DDFileLogger!
var logFileDataArray: [NSData] {
get {
let logFilePaths = ddFileLogger.logFileManager.sortedLogFilePaths() as! [String]
var logFileDataArray = [NSData]()
for logFilePath in logFilePaths {
let fileURL = NSURL(fileURLWithPath: logFilePath)
if let logFileData = try? NSData(contentsOfURL: fileURL, options: NSDataReadingOptions.DataReadingMappedIfSafe) {
// Insert at front to reverse the order, so that oldest logs appear first.
logFileDataArray.insert(logFileData, atIndex: 0)
}
}
return logFileDataArray
}
}
然后,当用户点击一个按钮表示他们想要发送日志时,
// Required by MFMailComposeViewController
import MessageUI
@IBAction func writeEmailTapped(sender: AnyObject) {
if MFMailComposeViewController.canSendMail() {
let composeVC = MFMailComposeViewController()
composeVC.mailComposeDelegate = self
// Configure the fields of the interface.
composeVC.setToRecipients(["your-email@company.com"])
composeVC.setSubject("Feedback for app")
composeVC.setMessageBody("", isHTML: false)
let attachmentData = NSMutableData()
for logFileData in MyLogger.sharedInstance.logFileDataArray {
attachmentData.appendData(logFileData)
}
composeVC.addAttachmentData(attachmentData, mimeType: "text/plain", fileName: "diagnostic.log")
self.presentViewController(composeVC, animated: true, completion: nil)
} else {
// Tell user about not able to send email directly.
}
}
这会导致撰写电子邮件弹出窗口,其中包含一个名为 diagnostic.log
的附件文件,该文件是连接在一起的所有日志文件。
特别感谢 - 这几乎是另一个答案给出的 Objective-C 版本的 Swift 翻译。
通过 USB 数据线直接从设备获取日志文件
如果您想获取您的应用在设备上运行时创建的日志文件,
- 将您的设备连接到您的 Mac
- 在 Xcode 中,转到窗口 -> 设备
- 在设备列表的左上角,点击已连接的设备。
- 在主面板的 Installed Apps 部分下,单击您运行 CocoaLumberjack 的应用程序。
- 在已安装的应用列表底部,点击齿轮图标,然后点击下载容器。
- 在 Finder 中,右键单击(显示菜单)保存的 .xcappdata 文件并选择显示包内容
- 日志文件保存在
/AppData/Library/Caches/Logs/
如果这对您有帮助,请投票!
关于ios - 使用 cocoaLumberjack 将日志文件存储在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6411549/