2010-12-02 29 views
0

J'ai écrit un enregistreur pour mes projets. Je me connecte aux fichiers texte et comme vous pouvez le deviner, il y a un horodatage, un espace de nommage, une classe, une méthode ... et enfin un message de journal. Comme ceci:Meilleurs choix pour analyser les fichiers journaux personnalisés

TestNamespace.MyProject.exe Error: 0 : 
11/11/2010 10:24:11 AM 
Assembly: TestNamespace.MyProject.exe 
Class: myClass 
Method: Test 

This is a log message ! 


TestNamespace.MyProject.exe Error: 0 : 
11/11/2010 10:24:12 AM 
Assembly: TestNamespace.MyProject.exe 
Class: myClass 
Method: Test2 

This is another log message ! 

Je suis à la recherche d'un outil gratuit pour analyser mes fichiers journaux (certains tableaux, graphiques, etc.). Merci d'avance.

Répondre

0

Microsoft a un LogParser qui est très flexible avec n'importe quel format de journal. L'inconvénient est, c'est un outil de ligne de commande et n'a pas de changements à partir de 2005 (version 2.2). Vous pouvez écrire des commandes SQL sur votre fichier journal et générer des tableaux/diagrammes appropriés pour vous. Certains outils d'interface graphique sont écrits pour cela.

0

Étant donné que vous générez des messages de journal dans un format personnalisé, vous avez pratiquement besoin d'un analyseur personnalisé.

0

Python

import datetime 
from collections import namedtuple 
Record = namedtuple('Record', 'file,level,number,datetime,assembly,class,method,message') 

def block_iter(theFile): 
    file_iter= iter(theFile) 
    while True: 
     items= [ next(file_iter) for x in range(9) ] 
     if not items: break 
     yield items 

def record_iter(blocks): 
    for items in blocks: 
     file, level, number = items[0].split(":") 
     dt = datetime.datetime.strptime(items[1], "%m/%d/%Y %H:%M:%S %p") 
     _, _, asm = items[2].partition(":") 
     _, _, cls = items[3].partition(":") 
     _, _, mth = items[4].partition(":") 
     txt = "".join(items[5:]) 
     yield Record(file, level, number, dt, asm, cls, mth, txt) 

with open("someapp.log", "r") as source: 
    for log in record_iter(block_iter(source)): 
     print log 

Quelque chose comme ça pourrait vous aider à démarrer.