Захватите выход log4J с помощью grep - PullRequest
1 голос
/ 12 июня 2010

Я знаю, что log4j по умолчанию выводит в stderror.

Я захватил выход моего приложения с помощью следующей команды:

application_to_run 2> log ; cat log | grep FATAL

Есть ли способ захвата вывода без вспомогательного файла?

Ответы [ 2 ]

2 голосов
/ 12 июня 2010

Если вы хотите оба 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 голос
/ 12 июня 2010

Если вы спрашиваете, как перенаправить stderr на stdout , чтобы вы могли использовать его в конвейере, я знаю два способа:

$ command 2>&1 | ...

$ command |& ..
...