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

Java:同步标准输出和标准错误

陆洛城
2023-03-14
问题内容

我有一个奇怪的问题,如果可以解决,那就太好了。出于调试目的(以及其他一些目的),我在标准输出上编写了控制台Java应用程序的日志。在标准输出上写一些内容,在标准错误上打印一些错误,例如错误。问题是这两个没有完全同步,因此打印线的顺序并不总是正确的。我猜这是因为打印了很多东西,并且碰巧一个输出的缓冲区已满,所以其他输出在第一个输出刷新其缓冲区之前就已打印出来。

例如,我想这样写:

syso: aaa
syso: bbb
syso: ccc
syso: ddd
syso: eee
syserr: ---

有时打印的是

aaa
bbb
ccc
---
ddd
eee

有时两者之间没有换行,所以看起来

aaa
bbb
ccc---

ddd
eee

每次在输出上打印一些内容时,我都会用刷新相同的输出

System.out.flush();

要么

System.err.flush();

如何解决这个问题呢?顺便说一句,所有内容都打印在Eclipse控制台中。


问题答案:
public class Util

    synchronized public static void printToOut(...)
        out.print(...)

    synchronized public static void printToErr(...)
        err.print(...)


 类似资料:
  • 10.2. 标准输入、输出和错误 UNIX 用户已经对标准输入,标准输出和标准错误的概念非常熟悉了。这一节是为其他不熟悉的人准备的。 标准输入和标准错误(通常缩写为 stdout 和 stderr)是內建在每一个 UNIX 系统中的管道。当你 print 某些东西时,结果前往 stdout 管道;当你的程序崩溃并打印出调试信息(类似于 Python 中的错误跟踪)的时候,信息前往 stderr 管

  • 我是Java的初学者。学习罗伯特·塞奇威克的《Java导论》 我尝试在Netbeans中编译以下代码。 } 我收到了这个错误。我已将文件放置在标准位置。java 线程“main”java.lang.RuntimeException中的异常:无法编译的源代码-错误的sym类型:示例。StdIn.is在示例中为空。verage.main(verage.java:16)Java结果:1 BUILD SU

  • 问题内容: 是否可以在Python中临时重定向stdout / stderr(即在方法期间)? 编辑: 当前解决方案的问题(我最初记得但后来忘记了)是它们没有 重定向 ;相反,它们只是完全替换了流。因此,如果某个方法由于某种原因(例如,由于将流作为参数传递给某物)而具有该变量的 本地 副本,则该方法将无效。 有什么办法吗? 问题答案: 要解决某些函数可能已将流作为局部变量缓存的问题,因此替换全局变

  • 和之前 inputs/stdin 插件一样,outputs/stdout 插件也是最基础和简单的输出插件。同样在这里简单介绍一下,作为输出插件的一个共性了解。 配置示例 output { stdout { codec => rubydebug workers => 2 } } 解释 输出插件统一具有一个参数是 workers。Logstash 为输

  • 我正在尝试使用perl进行简单的问卷调查。我想在用户输入时将响应记录在日志文件中。我在将stdin重定向到文件时遇到问题。 下面是我实现的代码。参考这个。 我现在得到的输出是,只有在用户输入后,问题才被打印出来。 下面是预期的输出: 我还发现了重复的stdin到stdout,但真的无法实现我想要的。我错过了什么吗?! 有更清洁的解决方案吗?

  • 我不知道这个代码出了什么问题,我得到的标准输出是空的错误帮助我! 提供的投入: