使用grep捕获log4J输出

时间:2010-06-12 11:50:29

标签: bash scripting log4j grep stderr

我知道log4j默认输出到stderror。

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

application_to_run 2> log ; cat log | grep FATAL

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

2 个答案:

答案 0 :(得分:2)

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

( 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 |& ..