java stderr 去哪里了?

发布于 2024-07-15 13:06:04 字数 251 浏览 12 评论 0原文

我想知道,java stderr 标准去哪里?

我知道我可以使用 System.setErr 更改 stderr,它“重新分配“标准”错误输出流。”,但我不知道哪一个是“标准”。

我想进一步具体说明我的问题: 我有在 java (jni) 中使用的 C++ 库。 问题是我似乎看不到来自我的 C++ 库的 stderr 输出。 当我运行使用该库的 java api 时,我在 C++ 库中调用assert(),但在控制台中看不到输出。

I would like to know, where does java stderr standardly go?

I know I can change the stderr using System.setErr, which 'Reassigns the "standard" error output stream.', but I dont know, which one is "standard".

I would like to specify my question more:
I have C++ library that I use in java (jni). The problem is that it appears that I cannot see output to stderr, that comes from my C++ library. I call assert () in C++ library and don't see the output in console, when I run the java api that uses the library.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

眼波传意 2024-07-22 13:06:04

无论设置如何,它都会进入进程的标准错误流。

  • 如果您从控制台运行应用程序,它也可能会写入控制台。
  • 在 GUI 中,标准输出/错误经常被丢弃,即输出丢失。
  • 在服务(例如 Web 服务器)中,标准错误/输出通常在某个位置的轮换日志文件中捕获,但这完全取决于服务。

大多数平台允许您将标准错误流重定向到其他地方(例如,重定向到文本文件)。

System.setErr 的想法是允许您使用进程本身的标准错误流,而是更改它以便调用 System.err.println 等到给定的流。

It goes to the standard error stream of the process, whatever that's set up to be.

  • If you run the application from a console, it will probably write to the console as well.
  • In a GUI, standard out/err are often dropped, i.e. the output is lost.
  • In a service (e.g. a web server) the standard error/output is usually captured in a rotated log file somewhere, but it entirely depends on the service.

Most platforms allow you to redirect the standard error stream somewhere else (e.g. to a text file).

The idea of System.setErr is to allow you to not use the standard error stream of the process itself, but change it so that calls to System.err.println etc go to the given stream.

国产ˉ祖宗 2024-07-22 13:06:04

默认情况下,System.err 是控制台,就像 System.out 一样。

By default System.err is the console, just like System.out.

白日梦 2024-07-22 13:06:04

调用者的文件描述符 2。 它从那里去哪里——取决于调用者。
在控制台上,您可以将其重定向到其他地方,例如:

java Example 2>> errors.log

File descriptor 2 of the caller. Where it goes from there — depends on the caller.
On console, you can redirect it somewhere else, like for example:

java Example 2>> errors.log
千仐 2024-07-22 13:06:04

我刚刚编写了一个执行 System.err.println 的小测试程序,它似乎输出到控制台。

I've just written a little test program that does a System.err.println and it would appear to be output to the console.

春庭雪 2024-07-22 13:06:04

这应该转到 java.io.FileDescriptor.err
https://docs.oracle.com/ javase/1.5.0/docs/api/java/io/FileDescriptor.html

System.setErr(new PrintStream(new BufferedOutputStream(new FileOutputStream(java.io.FileDescriptor.err),128),true));

This should go to java.io.FileDescriptor.err
https://docs.oracle.com/javase/1.5.0/docs/api/java/io/FileDescriptor.html

System.setErr(new PrintStream(new BufferedOutputStream(new FileOutputStream(java.io.FileDescriptor.err),128),true));
拥醉 2024-07-22 13:06:04

标准错误输出流转到控制台。 该流已打开并准备好接受输出数据。

请参阅 java sun api 了解更多详情。

The standard error output stream goes to the console. This stream is already open and ready to accept output data.

See the java sun api for further details.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文