2009-04-17 6 views
2

LogParser n'est pas open source et j'ai besoin de cette fonctionnalité pour un projet open source sur lequel je travaille. Je voudrais écrire une bibliothèque qui me permet d'interroger des fichiers journaux énormes (principalement IIS), de préférence avec Linq.Essayer d'écrire un programme/une bibliothèque comme LogParser - Comment ça fonctionne en interne?

Avez-vous des liens utiles pour nous? Comment fonctionne un programme comme LogParser si vite? Comment gère-t-il les limitations de mémoire?

Répondre

2

Il traite probablement les informations contenues dans le journal au fur et à mesure de leur lecture. Cela signifie que la bibliothèque n'a pas besoin d'allouer une énorme quantité de mémoire pour stocker les informations. Il peut lire un morceau, le traiter et le jeter. C'est un moyen habituel et très efficace de traiter les données.

Vous pourriez par exemple travailler ligne par ligne et analyser chaque ligne. Pour l'analyse réelle, vous pouvez écrire une machine d'état ou, si les conditions le permettent, utiliser regex.

Une autre approche serait une machine d'état qui à la fois lit et analyse les données. Si, pour une raison quelconque, une entrée de journal couvre plus d'une ligne, cela peut être nécessaire.

Quelques machines d'état des liens connexes:

Un très machine simple état écrit en C: http://snippets.dzone.com/posts/show/3793

Alot de code lié python, mais certaines sections sont universellement applicables: http://www.ibm.com/developerworks/library/l-python-state.html