您如何不从 Java 应用程序输出到 stderr?
How do you not output to stderr from a Java app?
我怎么会不小心从 Java 应用程序输出到 stderr?我刚刚读到这个:
http://tutorials.jenkov.com/java-io/system-in-out-error.html
这似乎输出到标准输出:
System.out.println("File opened...");
并将此发送到标准错误:
System.err.println("File opening failed:");
我从来没有故意输出到 System.err,但我想知道 Java 中的某些函数是否会自动执行此操作?也许当抛出异常时?
我这样做是因为我设置了 Supervisord 来启动和监控我的 Java 应用程序,我的应用程序发出一些启动消息,并且 Supervisord 将一些消息记录到 stdout 日志,但其他消息记录到 stderr 日志。我想知道如何控制它。 stderr 中的大部分内容是我希望应用程序发出的启动消息。它们应该在标准输出日志中。
我最初将这个问题发布到 Whosebug,我最初将其表述为关于日志的问题,所以我被告知它必须转到 ServerFault。所以我把它重新发布到 ServerFault,但没有得到任何回应,主要是因为我认为这确实是一个应用程序问题。您可以在此处查看有关 ServerFault 的问题:
您可以使用:http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#setErr%28java.io.PrintStream%29
只需制作一些模型 class,除了遵循 PrintStream 接口什么都不做,您就可以开始了。
当抛出异常但未捕获时,线程级 uncaught exception handler 会处理它。如果您已指定 none,则使用默认值。 JLS 不指定默认处理程序。但是 oracle 的默认处理程序打印到 stderr。所以这是一种无需使用 System.err
即可获得 stderr 输出的方法
我怎么会不小心从 Java 应用程序输出到 stderr?我刚刚读到这个:
http://tutorials.jenkov.com/java-io/system-in-out-error.html
这似乎输出到标准输出:
System.out.println("File opened...");
并将此发送到标准错误:
System.err.println("File opening failed:");
我从来没有故意输出到 System.err,但我想知道 Java 中的某些函数是否会自动执行此操作?也许当抛出异常时?
我这样做是因为我设置了 Supervisord 来启动和监控我的 Java 应用程序,我的应用程序发出一些启动消息,并且 Supervisord 将一些消息记录到 stdout 日志,但其他消息记录到 stderr 日志。我想知道如何控制它。 stderr 中的大部分内容是我希望应用程序发出的启动消息。它们应该在标准输出日志中。
我最初将这个问题发布到 Whosebug,我最初将其表述为关于日志的问题,所以我被告知它必须转到 ServerFault。所以我把它重新发布到 ServerFault,但没有得到任何回应,主要是因为我认为这确实是一个应用程序问题。您可以在此处查看有关 ServerFault 的问题:
您可以使用:http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#setErr%28java.io.PrintStream%29
只需制作一些模型 class,除了遵循 PrintStream 接口什么都不做,您就可以开始了。
当抛出异常但未捕获时,线程级 uncaught exception handler 会处理它。如果您已指定 none,则使用默认值。 JLS 不指定默认处理程序。但是 oracle 的默认处理程序打印到 stderr。所以这是一种无需使用 System.err