【问题标题】:Mac OS Swift: Writing crash log to text fileMac OS Swift:将崩溃日志写入文本文件
【发布时间】: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


【解决方案1】:

我实际上最终选择了@MwcsMac 的解决方案。我将 Xcode 安装到网络外的机器上,然后将其带回网络,在那里我可以运行应用程序并测试我的需要。我无法更新 Xcode,但我真的不需要。

我上面的错误日志解决方案提示我解决问题,然后通过 Xcode 打开和运行应用程序给了我详细信息。谢谢大家!

【讨论】:

    猜你喜欢
    • 2010-12-17
    • 2020-04-04
    • 2022-11-10
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多