temos vários aplicativos (geralmente java) e eles registram no servidor rsyslog centralizado (versão 7.6). Tivemos problemas com exceções java, já que o rsyslog estava manipulando cada linha de rastreamento de pilha como mensagem separada, então nossos desenvolvedores começaram a usar # 012 como nova linha e # 011 como guia. Então, agora, quando tenho uma mensagem com exceção, parece que:
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
A primeira coisa que eu adoraria é substituir automaticamente as cadeias #xxx por seus valores originais, para que o arquivo de log resultante seja legível.
A segunda coisa é que estamos usando graylog2 onde temporariamente por algumas semanas armazenamos os logs para que possam ser facilmente pesquisados. O Rsyslog está configurado para salvar os logs em algum local E reenviar os logs para o graylog e é claro que gostaria de ter exceções lá com espaços e tabulações em vez de caracteres de controle.
Eu estava fazendo alguma pesquisa e estava tentando substituir esses caracteres de controle como deveriam (eu acho) ser compatível com o rsyslog:
link
link
Mas sem sorte até agora.
Obrigado antecipadamente pelo seu tempo e ajuda!
P.S. O primeiro problema pode ser usado com o cron e o sed, mas não resolverá o segundo.