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

重定向系统。从每一个线索中

井高峯
2023-03-14

我已经创建了一个摇摆用户界面,并将System.out和System.err重定向到这个代码的文本字段

ConsoleOutputStream cos = new ConsoleOutputStream(textColor, printStream);
System.setOut( new PrintStream(cos, true) );

ConsoleOutputStream通过TearayoutPutStream进行扩展,只要在新线程中不执行任何操作,它就会按预期工作。

然而,我的应用程序执行第三方jar文件,从而创建新线程。当这些线程打印到系统时。它会打印在启动我的应用程序的终端上,而不是打印在我的文本字段中。我已经看过这个链接:http://maiaco.com/articles/java/threadOut.php但我不确定它是否适用于我的问题,因为我无法控制线程。就我的应用程序所知,没有创建任何线程(除了主gui线程)。

是否有办法重定向所有系统。出:s和系统。错误:它独立于线程吗?如果没有,我可以听听系统的电话吗。然后打印到我的文本栏?我是否可以监听我启动应用程序的终端,并将它的所有输出重定向到我的应用程序?

共有1个答案

靳祺然
2023-03-14

系统。out不是特定于线程的。有两种可能性:

>

这些库不使用系统。退出。对于写入控制台,可以选择创建新的FileOutputStream(FileDescriptor.out)并写入。或者使用系统。console()

如果这是通过已知的日志API之一实现的,则可以通过删除默认的控制台写入日志处理程序并安装自己的日志处理程序来覆盖该行为。否则很难做到。您必须仔细研究这些库和它们的API,以了解如何做到这一点。每一个复杂的库都会提供一种方式,即直接向控制台写入消息而不提供替代方案,这是一种非常糟糕的编程风格,尤其是对于库来说。

您使用的库很可能使用日志API。

 类似资料:
  • 我有一些遗留代码(或者更确切地说,一些我们无法控制但我们必须使用的代码),可以编写大量语句来system.out/err. 与此同时,我们正在使用一个框架,该框架使用一个围绕log4j的自定义日志系统(同样,不幸的是,我们不能控制这个)。 因此,我试图将out and err流重定向到一个将使用日志系统的定制PrintStream。我在读关于和方法,但问题是,我需要编写自己的PrintStream

  • 在Java /Swing应用程序中,我们将System.out和System.err重定向到一个单独的视图(称为“SystemOutView”),当新的输出出现时,该视图会弹出打开。这对于抛出的异常和都很有效。这个视图可以通过属性文件进行配置(即它是否处于活动状态,以及它是否在输出时弹出打开)。 在这个项目中,我们使用log4j 1.2.15。我发现log4j输出,即使发送到STDOUT,也不会被

  • 问题内容: 我在PHP中工作。我想在登录后将页面重定向到我要访问的最后一个页面,但是我仍在5小时内堆放在这里,但我仍然没有做到。这是架构,我有3个php文件。 我正在使用Cookie进行重定向。首先,我去了newest.php,然后我单击了按钮(转到thread.php)。然后thread.php看到您尚未登录,然后重定向到signin.php。在我填写登录表单之后,我单击了提交按钮(signin

  • 在我的应用程序中,当我徒步旅行时,我会为每个位置的变化画一条折线。这可能是一个8小时的背包徒步旅行,所以我可能有数万个点的计划。 在我的测试中,我注意到当我放大到相当近的地方(比如17或18)时,即使在绘制了数千条线后,它也工作得很好,但当我缩小时,地图必须渲染所有这些线,它变得缓慢,因为我的手机试图处理所有事情。 我所知道的绘制折线的另一个选项是创建一个包含所有点(LatLng)的集合(Arra

  • 我有一个场景,在呈现JSF页面之前,我必须调用另一个bean和注册的bean属性,因为JSF页面引用bean属性来呈现响应。 处理请求-调用后端方法以获取详细信息-如果(type==XYZ),则调用beantwo.gettypexyz()并按照为beantwo.gettypexyz()定义的导航规则重定向-否则(type==RST),则调用beanthree.gettyperst()并按照为bea

  • 我正在尝试从一个页面的app.js转移到addwork.js。我在app.js中添加了一个将用户重定向到addwork.js的按钮,但奇怪的是页面重定向到相同的页面(app.js界面),而URL却变成了addwork。 我在render()中使用了以下代码: