2009-11-19 3 views
2

Après avoir fait de la journalisation pendant de nombreuses années, j'ai maintenant atteint un point où je dois être capable de post-traiter les fichiers journaux avec l'objectif à long terme d'utiliser les fichiers journaux comme moyen de transport. Al. donc je peux rejouer les demandes de backend. Pour ce faire, j'ai besoin de conserver les objets dans une forme loggable. La méthode recommandée par Sun consiste à utiliser java.beans.XMLEncoder pour créer un extrait XML qui me convient, mais le problème est qu'il est envoyé à un OutputStream codé en UTF-8, y compris un L'en-tête UTF-8 et OutputStreams sont orientés octet. Les fichiers journaux sont orientés caractères (chaînes) et les fichiers journaux sont généralement codés dans l'encodage par défaut de cette plate-forme. Notre XML peut inclure n'importe quel caractère Unicode.Comment est-ce que je pourrais logiquement consigner binaire ou XML en utilisant slf4j/log4j/java.util.logging?

J'ai besoin d'une manière robuste de gérer cela, en préférant une approche qui génère des fichiers lisibles par l'homme.

J'ai pensé à convertir le XML OuptutStream en String, en supprimant l'en-tête inutilisable et en l'aplatissant en ASCII (avec tout caractère non-ASCII codé comme une entité numérique). J'ai également pensé à utiliser des transformations XML, mais j'ai l'intuition que cela nécessitera plus de ressources que ce que je veux qu'un enregistreur fasse.

Suggestions?

+0

Quel protocole utilisez-vous pour parler au backend? –

+0

Un protocole spécifique au fournisseur, pas JDBC ou similaire. –

Répondre

2

Plus un indice qu'une vraie réponse: jetez un oeil à this thread sur la liste de diffusion logback-dev et surtout les messages de Joern Huxhorn (qui est l'auteur de Lilith). Plus généralement, je pense que vous devriez regarder le logback, le "successeur" de log4j du même auteur, Ceki Gülcü. C'est là que les choses se passent à mon avis.

+0

Merci. C'est aussi ce à quoi Jörn m'a renvoyé (mais apparemment j'ai misé quand c'est arrivé). Il semble que la conclusion est qu'il n'existe actuellement aucun support approprié pour les données binaires dans la plupart des backends. –

Questions connexes