【发布时间】:2017-12-26 10:57:57
【问题描述】:
我有一个简单的 Mac OS 菜单栏应用程序(右上角)。它执行几个基本的服务器调用并组织数据。由于太长的原因无法解释,我无法直接在计算机上构建/测试应用程序,所以我一直在做的是在我的开发机器上编译和存档,然后将应用程序转移到服务器计算机上运行。
出于调试目的,我有一个函数可以将打印语句连同时间戳一起保存到文本文件中。
let fileName = "errorLogs"
let DocumentDirURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
let fileURL = DocumentDirURL.appendingPathComponent(fileName).appendingPathExtension("txt")
var readString = ""
do {
// Read the file contents
readString = try String(contentsOf: fileURL)
} catch let error as NSError {
print("Failed reading from URL: \(fileURL), Error: " + error.localizedDescription)
}
let modifiedString = "\(readString)\n\(Date()): \(text)"
do {
// Write to the file
try modifiedString.write(to: fileURL, atomically: true, encoding: String.Encoding.utf8)
} catch let error as NSError {
print("Failed writing to URL: \(fileURL), Error: " + error.localizedDescription)
}
它对于运行时问题非常有效,但问题是当应用程序一起崩溃时。如果我在 Xcode 模拟器环境中测试应用程序,我希望得到一个输出。
所以我的问题是这样的。是否可以将堆栈跟踪类型的调试日志输出到文本文件,以便我可以更好地了解应用程序崩溃的位置?
【问题讨论】:
-
建议使用 XCGLogger,您可以将日志直接写入特定路径。 github.com/DaveWoodCom/XCGLogger
-
我会在您用来测试应用程序的机器上运行 Xcode。或者使用 fabric.io 之类的东西并安装 crash Crashlytics 或其他类型的 Crashlytics 插件。
-
MwcsMac:我会这样做,但是机器处于不允许 Xcode 运行的超安全环境中。不过,我会检查一下 XCGLogger 的东西,看起来它可能会奏效。谢谢!
标签: swift macos debugging error-handling