Nous avons plusieurs applications (généralement java) et elles se connectent à un serveur rsyslog centralisé (version 7.6). Nous avons eu des problèmes avec les exceptions java, car rsyslog traitait chaque ligne de la trace de la pile comme un message séparé. Nos développeurs ont donc commencé à utiliser #012 comme nouvelle ligne et #011 comme tabulation. Donc maintenant, quand j'ai un message avec une exception, cela ressemble à :
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
La première chose que j'aimerais faire est de remplacer automatiquement ces chaînes #xxx par leurs valeurs d'origine, afin que le fichier journal résultant soit lisible.
La deuxième chose est que nous utilisons graylog2 où nous stockons temporairement pendant quelques semaines les journaux afin qu'ils puissent être facilement recherchés. Rsyslog est configuré pour sauvegarder les journaux à un certain endroit ET renvoyer les journaux à graylog et j'aimerais bien sûr que les exceptions soient faites avec des espaces et des tabulateurs au lieu des caractères de contrôle.
Je faisais quelques recherches et j'essayais de remplacer ces caractères de contrôle car ils devraient (je pense) être compatibles avec rsyslog :
http://www.rsyslog.com/doc/property_replacer.html http://www.rsyslog.com/doc/rsconf1_escapecontrolcharactersonreceive.html
Mais pas de chance jusqu'à présent.
Merci d'avance pour votre temps et votre aide !
P.S. Le premier problème peut être résolu avec cron et sed, mais pas le second.