我怎么可能不小心从Java应用程序输出到stderr?我刚读了这个:

http://tutorials.jenkov.com/java-io/system-in-out-error.html

看来这输出到标准输出:

System.out.println("File opened...");


这给stderr:

System.err.println("File opening failed:");


我从不输出到System.err,但是我想知道Java中的某些功能是否自动执行此操作?也许当抛出异常时?

这样做是因为我将Supervisord设置为启动和监视Java应用程序,并且我的应用程序发出了一些启动消息,Supervisord将一些消息记录到stdout日志中,而将其他消息记录到stderr日志中。我想知道如何控制这一点。 stderr中的大多数内容是我希望应用发出的启动消息。它们应该在标准输出日志中。

我最初将此问题发布到StackOverflow,最初将其表达为关于日志的问题,因此被告知必须转到ServerFault。因此,我将其重新发布到ServerFault,但没有任何响应,主要是因为我认为这确实是一个应用程序问题。您可以在此处查看有关ServerFault的问题:

https://serverfault.com/questions/711199/how-would-i-tell-supervisord-that-these-messages-dont-belong-in-stderr

最佳答案

您可以使用:http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#setErr%28java.io.PrintStream%29

只需制作一个模拟类,该类只执行PrintStream接口,什么也不做,您就可以开始了。

08-05 15:27