我知道 log4j 默认输出到 stderror。
我一直在使用以下命令捕获我的应用程序的输出:
application_to_run 2> log ; cat log | grep FATAL
有没有办法在没有辅助文件的情况下捕获输出?
如果您同时需要stdout
and 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
。
如果您询问如何将stderr重定向到stdout以便您可以在管道中使用它,我知道有两种方法:
$ command 2>&1 | ...
$ command |& ..