当前位置: 首页 > 面试题库 >

如何在golang中将消息记录到控制台和文件?

淳于功
2023-03-14
问题内容

我可以将所有消息定向到log.txt文件:

logFile, err := os.OpenFile("log.txt", os.O_CREATE | os.O_APPEND | os.O_RDWR, 0666)
if err != nil {
    panic(err)
}
log.SetOutput(logFile)

但是我也如何在控制台中获取日志消息?


问题答案:

使用 io.MultiWriter

MultiWriter创建一个写入器,该写入器将其写入复制到所有提供的写入器中,类似于Unix tee(1)命令

mw := io.MultiWriter(os.Stdout, logFile)
log.SetOutput(mw)


 类似资料:
  • 我们的日志服务器通过 json 格式的 kubernetes pods sysout 和索引 json 字段来使用我们的日志消息。我们需要在消息中指定一些预定义的字段,以便我们可以跨 Pod 跟踪事务。对于我们的一个容器,我们使用 Liberty 配置文件,并且有问题来配置日志记录以满足这些需求。 一个想法是使用log4j在控制台中发送自定义的json消息。但是所有消息都被 Liberty 日志系

  • 我试图将命令提示符中打印出来的信息从JAVA控制台显示到C#。当在JAVA中发出System.out.println时,它可以很好地工作,但是它不能用于logger.info print out。 注意:当我通过windows命令提示符(CMD>java-jar testbed.jar)运行它时,记录器信息会在命令提示符中打印出来。 JAVA来做一个简单的增量和减量数字,当按下按钮进行增量或减量时

  • 我正在使用下面的jQuery JSONP请求按URL检查资源的状态。当资源不可用或服务器关闭时,我的函数更新显示。 我遇到的问题是,尽管为和声明了处理程序(它们不将任何内容记录到控制台),但jQuery总是将失败的请求记录在控制台中。如果资源长时间不可用,这将建立一个巨大的控制台日志,最终导致浏览器进程崩溃(在我的例子中是Chrome)。 有什么办法可以阻止它这样做吗?

  • 我正在迁移一个遗留的应用程序来使用logback,在这个过程中我试图保持所有的旧功能以相同的方式工作。遗留应用程序所做的一件事是,如果无法写入日志文件(由于空间不足、权限不正确等原因),则将日志记录到控制台 对于logback,似乎应该由StatusListener来处理这个问题,我可以使用getOrigin获得筛选后的附加程序,但我不知道如何获得与origin附加程序相关联的日志记录程序。有可能

  • 问题语句:我有一个在Xcode中运行的程序,它有一堆print()语句,可以很好地将输出打印到调试控制台。然而,我希望也能够将这些输出重定向到一个文件,这样我就可以让用户将它们发送给我,作为调试的一种方式。 SO上找到的解决方案使我可以将输出重定向到文件,但调试控制台输出将丢失。 问:我想要我的蛋糕和吃它。我希望能够将print()语句重定向到调试控制台和文件。 所以我有引用:https://st

  • 问题内容: 此代码是否同时写入日志文件和控制台? 问题答案: 不,它不会同时写入两者。只会写入控制台。关于原始代码的简短说明。我想您在某处定义,但是代码仍然不正确。您需要在语句中使用引号,例如: 因为我认为您是要附加到文件中。否则,您的代码将抛出一个因为未定义的变量。 但是,正如其他人所说,您应该强烈考虑使用日志记录模块。这是一个如何同时写入控制台和日志文件的简单示例。该代码部分源自此处和此处: