1

我知道 log4j 默认输出到 stderror。

我一直在使用以下命令捕获我的应用程序的输出:

application_to_run 2> log ; cat log | grep FATAL

有没有办法在没有辅助文件的情况下捕获输出?

4

2 回答 2

2

如果您同时需要stdoutand stderr,请使用:

( application_to_run 2>&1 ) | grep FATAL

如果你想要两个都stderr单独使用,你可以使用:

( application_to_run 2>&1 >/dev/null ) | grep FATAL

第一个将发往文件句柄 2 ( stderr) 的所有输出发送到文件句柄 1 ( stdout),然后通过grep. 第二个做同样的事情,但也发送stdout到比特桶。这将起作用,因为重定向是一个位置问题。首先,stderr被重定向到当前 stdout的,然后stdout被重定向到/dev/null

于 2010-06-12T11:53:12.987 回答
1

如果您询问如何将stderr重定向到stdout以便您可以在管道中使用它,我知道有两种方法:

$ command 2>&1 | ...

$ command |& ..
于 2010-06-12T11:56:41.153 回答