提问者:小点点

如何将控制台输出同时打印到文件和控制台


问题语句:我有一个在Xcode中运行的程序,它有一堆print()语句,可以很好地将输出打印到调试控制台。然而,我希望也能够将这些输出重定向到一个文件,这样我就可以让用户将它们发送给我,作为调试的一种方式。

SO上找到的解决方案使我可以将输出重定向到文件,但调试控制台输出将丢失。

问:我想要我的蛋糕和吃它。我希望能够将print()语句重定向到调试控制台和文件。

所以我有引用:https://stackoverflow.com/A/46339657/14414215 https://stackoverflow.com/A/553392944/14414215


共1个答案

匿名用户

使用问题中链接的2 SO,我设法修改了我的CSVoutput函数,如下所示。使用这个函数,我每次都调用该函数。

import Foundation

struct CSVfuncs {

  static func writeLog(_ string: String){
      let filename = "Log_DebugLog.txt"
      let fileURL = FileManager.default.urls(for: .documentDirectory, in: .allDomainsMask).appendingPathComponent(filename)
 
        let data = "\(string)\n"
        
        do {
          print("\(string)")                     // Print to DebugConsole
          try data.appendToURL(fileURL: fileURL) // Redirect to File
        }
        catch {
          print("CSVfuncs writeLog: Could not write data to file")
        }
    }
}

示例:

CVSFuncs.writeLog("this is printed to Debug Console & File")