у нас есть несколько (обычно java) приложений, и они регистрируются на централизованном сервере rsyslog (версия 7.6). У нас были проблемы с исключениями java, поскольку rsyslog обрабатывал каждую строку трассировки стека как отдельное сообщение, поэтому наши разработчики начали использовать # 012 как новую строку и # 011 как вкладку. Итак, теперь, когда у меня есть сообщение с исключением, оно выглядит так:
2015-02-09T12:52:43.769Z hostname warning app Exception when invoking method something.search: reason=Error while executing method something.search, Params=#012{"maxResults":10,"query":"somesearch"}#012com.company.server.json.ApiException: Error while executing method something.search#012#011at com.company.app.api.BaseExecutor.executeWithDatabase(BaseExecutor.java:112) ~[app-server.jar:?]#012#011at com.company.app.api.BaseExecutor.execute(BaseExecutor.java:87) ~[app-server.jar:?]#012#011at com....and so on
Первое, что я хотел бы сделать, это автоматически заменить эти строки #xxx на их исходные значения, чтобы полученный файл журнала был доступен для чтения.
Во-вторых, мы используем graylog2, где временно в течение нескольких недель сохраняем журналы, чтобы их можно было легко найти. Rsyslog настроен для сохранения журналов в какое-то место и повторной отправки журналов в серый журнал, и я, конечно, хотел бы иметь там исключения с пробелами и табуляторами вместо управляющих символов.
Я проводил некоторое исследование и пытался заменить эти управляющие символы, поскольку они должны (я думаю) быть совместимыми с rsyslog:
http://www.rsyslog.com/doc/property_replacer.html http://www.rsyslog.com/doc/rsconf1_escapecontrolcharactersonreceive.html
Но пока безуспешно.
Заранее благодарим вас за ваше время и помощь!
P.S. Первую проблему можно использовать с cron и sed, но она не решит вторую.
Не совсем решение, но достаточно хорошее решение.
Для rsyslog - да, ночное задание cron с небольшой командой sed. Для graylog: вы можете использовать правила слюни, чтобы переписать сообщение до того, как оно попадет в механизм graylog. (источник: https://www.graylog.org/documentation/general/rewriting/ )