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