当前位置: 首页 > 知识库问答 >
问题:

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

柯振濂
2023-03-14

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

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

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

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

共有1个答案

郁烨
2023-03-14

使用问题中链接的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")
 类似资料:
  • 问题内容: 我正在尝试在python中找到一种将脚本执行日志重定向到文件以及以pythonic方式的方法。有没有简单的方法可以做到这一点? 问题答案: 我想出了这个[unested] 在python中将期望有一个函数。您可以使用具有此功能的自定义对象。否则,您也可以让sys.stdout引用您的对象,在这种情况下,即使没有,它也会被准备。

  • 我真的被困在作业的这一特定部分,它要求我将简单文本打印到控制台中,然后创建一个文件(无论主文件中的std::string文件名是什么),并将控制台的内容打印到该文件中。 我真的很困惑,因为该函数需要ostream,而且它还需要该函数使用任何文件名(在本例中是statistics.txt,只是为了测试该函数是否工作)。 函数是PrintStatistics。 我知道我可以使用cout在控制台上打印,

  • 问题内容: 我的C程序粘贴在下面。在bash中,程序打印“ char is”,不打印Ω。我的语言环境均为en_US.utf8。 问题答案: 这很有趣。显然,编译器将omega从UTF-8转换为UNICODE,但libc某种程度上将其弄乱了。 首先:-format说明符期望一个(即使在wprintf -version 中也是如此),因此您必须指定(并因此指定字符串)。 其次,如果您像这样将语言环境设

  • 我正在使用Windows上的Eclipse IDE(氧气)学习Java(SE8)。我以前做过一些“业余”编程,但这是我第一次正式上这门课。我希望能够在普通控制台(System.out.println)中打印分配所需的输出,并同时在不同的控制台中打印正在发生的信息文本。 printToConsole1(“普通程序输出”);printToConsole2(“幕后信息”); 我可以在Java中做类似的事

  • 问题内容: 我已尝试使用此代码建议(http://www.daniweb.com/forums/thread23883.html#)将控制台输出写入txt文件,但未成功。怎么了? 问题答案: 你需要执行以下操作: 第二句话是关键。它将假定的“最终” 属性的值更改为提供的值。 可以使用类似的方法(和)来更改标准输入和错误流。有关详细信息,请参考。 上面的一个更通用的版本是这样的: 如果为is ,则流

  • 问题内容: 我想获得的的通过启动到控制台。如何才能做到这一点? 这是一些不完整的代码: 问题答案: 我最近遇到了这个问题,只想提及自从Java 7以来,流程构建器api已得到扩展。现在可以使用以下方法解决此问题: