Comment écrire un Générique du Journal de l'Analyseur

Nous avons besoin d'analyser plusieurs fichiers journaux et d'exécuter quelques statistiques sur les journaux des entrées (des choses telles que le nombre d'occurrence de certains messages, des pointes d'occurrences, etc). Le problème est avec la rédaction d'un analyseur de journal qui va gérer plusieurs formats de journaux et me permettra d'ajouter un nouveau format de journal avec très peu de travail.

Pour rendre les choses plus facile pour l'instant je suis seulement en regardant les journaux qui va ressembler à ceci:

[11/17/11 14:07:14:030 EST] MyXmlParser     E   Premature end of file

de sorte que chaque entrée de journal contient un timestamp, originator (du message de log), level et journal message. Un détail important est qu'un message peut avoir plus d'une ligne (par exemple, stacktrace).
Un autre exemple de l'entrée de journal pourrait être:

17-11-2011 14:07:14 ERROR    MyXmlParser   - Premature end of file

Je suis à la recherche d'un bon moyen pour spécifier le format du journal ainsi que la plus adéquate de la technologie pour mettre en œuvre l'analyseur pour elle.
J'ai bien sur les expressions régulières, mais je pense que ça va être difficile à gérer des situations telles que le multi-ligne de message (par exemple, stacktrace).

En fait la tâche d'écrire un analyseur syntaxique pour un format de journal n'a pas l'air si facile de lui-même lorsque, je considère que la possibilité de multi-ligne de messages. Comment allez-vous l'analyse de ces fichiers?

Idéalement, j'aimerais être en mesure de préciser quelque chose comme cela comme un format de journal:

[%TIMESTAMP] %ORIGIN %LEVEL %MESSAGE

ou

%TIMESTAMP %LEVEL %ORIGIN - %MESSAGE

Évidemment j'aurais affecter le convertisseur droit de chaque champ pour traiter correctement (par exemple, l'horodatage).

Quelqu'un pourrait-il me donner quelques bonnes idées sur la façon de mettre en œuvre la présente dans un boîtier robuste et modulaire (je suis à l'aide de Java) ?

OriginalL'auteur Mario Duarte | 2011-11-28