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
Vous devez vous connecter pour publier un commentaire.
AWStats est un excellent analyseur de journal, open source, et vous pouvez faire ce que vous voulez avec la base de données qu'il génère.
Vous pouvez définir n'importe quelle sorte de journal. La directive LogFormat vous permet de dire ce qu'il a à rechercher et à analyser.
OriginalL'auteur Matt H
Vous pouvez utiliser un Scanner par exemple, et certains regexes. Voici un extrait de ce que j'ai fait pour analyser certains complexes journaux :
Donc, avec regexes et les groupes, cela fonctionne assez bien.
OriginalL'auteur Olivier Croisier
Si vous en avez la possibilité (et vous devriez avec un bon enregistreur de cadre), je vous recommande de dupliquer les fichiers journaux dans un analysée format. Par exemple, avec log4j utiliser un XMLLayout ou quelque chose comme ça.
Il sera beaucoup plus facile à analyser car vous saurez le format exact des journaux.
Vous pouvez le faire de manière assez transparente à l'application en cours d'exécution juste par le programme d'installation. Pensez à utiliser asynchronuous appender afin de ne pas déranger trop de l'application en cours d'exécution.
Également si le XMLLayout peuvent convenir à vos besoins jetez un oeil à Apache tronçonneuse
OriginalL'auteur Matthieu BROUILLARD
Log4j est LogFilePatternReceiver est exactement ce que fait...
Cette entrée de journal:
17-11-2011 14:07:14 ERREUR MyXmlParser - fin Prématurée de fichier
Peut être analysée suivant le format (en supposant que l'origine est la même que la "logger"), avec un timestamp en tirant parti de Java SimpleDateFormat de jj-MM-aaaa kk:mm:ss
TIMESTAMP NIVEAU DE L'ENREGISTREUR DE MESSAGE
Le fuseau horaire et le niveau dans les autres formes sont un peu plus délicates...il y a la possibilité de remapper les chaînes à des niveaux E d'ERREUR) mais je ne sais pas que le fuseau horaire aura assez de travail.
Essayer, consultez la source, et de jouer avec le support pour le développeur instantané de la Tronçonneuse:
http://people.apache.org/~sdeboy
OriginalL'auteur Scott
J'ai pas écrit mon propre et à l'aide de logstash.
OriginalL'auteur Mario Duarte
Au travail, nous avons lancé notre propre analyseur de journal (en Java) afin que nous puissions filtre connus stacktraces de la production de journaux pour identifier de nouveaux potentiels problèmes de production. Il utilise des regex et il est étroitement couplée à notre log4j format de journal.
Nous avons aussi un script python qui fonctionne sur le live de la production des journaux de transactions et les rapports (de SiteScope - notre infrastructure de surveillance de l'outil) quand le comte de particulier erreurs est trop élevé.
Alors que les deux sont utiles, ils sont affreux à maintenir, et je recommanderais d'essayer un outil open source d'analyse de l'outil premier, et le recours à l'écriture de vos propres uniquement si nécessaire. Diable, je dirais même payer pour un outil qui a fait cela 😉
OriginalL'auteur James Bassett
Peut-être que vous pourriez écrire un Log4j CustomAppender? Par exemple, comme décrit ici: http://mytechattempts.wordpress.com/2011/05/10/log4j-custom-memory-appender/
Personnalisé de votre appender pourrait utiliser une base de données ou de simples objets Java interrogé par JMX pour obtenir vos statistiques. Tout dépend de la quantité de données est nécessaire pour être conservé.
OriginalL'auteur ozOli