Я пытаюсь очистить журналы apache конфиденциальных данных, которые передаются в параметрах строки запроса. Я знаю, что это не хорошо, это не может быть изменено.
Исходя из этого вопроса: https://stackoverflow.com/a/9473943/1046387
Это по моему apache.conf
CustomLog "|/bin/sed -u -E s/'api_key=[^& \t\n]*'/'api_key=\[FILTERED\]'/g >> /var/log/apache2/access.log" combined
Я получаю эту ошибку:
AH00106: piped log program '/bin/sed -u -E s/'api_key=[^& \\t\\n]*'/'api_key=\\[FILTERED\\]'/g >> /var/log/apache2/access.log' failed unexpectedly
/bin/sed: -e expression #1, char 14: unterminated `s' command
Несмотря на возможность непосредственного запуска команды на поле:
$ echo "api_key=343" | /bin/sed -u -E s/'api_key=[^& \t\n]*'/'api_key=\[FILTERED\]'/g
api_key=[FILTERED]
Похоже, apache не передает команду sed
правильно, поэтому отсутствуют некоторые аргументы. Какая-то проблема с escape-последовательностями или что-то?