Apache передавал журналы, ошибки и выполнял успешные действия одновременно

#bash #apache #shell #pipe

#bash #apache #оболочка #канал

Вопрос:

У меня есть этот формат журнала для моего сервера Apache

 LogFormat "%h %l %u %t "%r" status:%>s %O "%{Referer}i" "%{User-Agent}i" %v %h %D %A %>s %T" combined
  

Я пытаюсь отфильтровать эти журналы на основе значения %T , превышающего 3, чтобы я мог отправлять их в Loggly. У меня есть огромный объем журналов для управления, и я не могу отправить их все напрямую в Loggly, поскольку это перебор для плана, в котором я участвую.

В итоге я написал эту CustomLog директиву в своем VirtualHost

 CustomLog "|/bin/bash -c '{ read ENTRY <amp;0; if [ ${ENTRY##* } -gt 3 ]; then echo $ENTRY | sed -r 's/status:(d*)//' >> /var/log/apache2/slow.log; fi; }'" combined
  

Это добавляет правильные записи журнала в slow.log файл, но также выдает сообщение об ошибке

 AH00106: piped log program '/bin/bash -c '{ read ENTRY <amp;0; if [ ${ENTRY##* } -gt 3 ]; then echo $ENTRY | sed -r \'s/status:(\d*)//\' >> /var/log/apache2/slow.log; fi; }'' failed unexpectedly
  

Это вывод, slow.log если это поможет

 XXX.YYY.ZZZ.WWW - - [06/Oct/2016:10:06:08  0000] "GET / HTTP/1.1" 200 4575 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0" YYY.ZZZ.WWW.XXX ZZZ.WWW.XXX.YYY 4032879 ZZZ.WWW.XXX.YYY 200 4
  

Примечание, которое я должен был использовать status:%>s для фильтрации других журналов. Я также пробовал без sed , но ошибка сохраняется.