Попытка написать программу / библиотеку, такую ​​как LogParser - Как это работает внутри? - PullRequest
2 голосов
/ 17 апреля 2009

LogParser не является открытым исходным кодом, и мне нужна эта функциональность для проекта с открытым исходным кодом, над которым я работаю.

Я бы хотел написать библиотеку, которая позволяла бы запрашивать огромные (в основном IIS) файлы журналов, желательно с Linq.

У вас есть ссылки, которые могут мне помочь? Как такая программа, как LogParser, работает так быстро? Как это обрабатывает ограничения памяти?

Ответы [ 2 ]

2 голосов
/ 17 апреля 2009

Вероятно, он обрабатывает информацию в журнале, как он читает. Это означает, что ей (библиотеке) не нужно выделять огромное количество памяти для хранения информации. Он может прочитать фрагмент, обработать его и выбросить. Это обычный и очень эффективный способ обработки данных.

Вы можете, например, работать построчно и анализировать каждую строку. Для фактического анализа вы можете написать конечный автомат или, если требования позволяют это, использовать регулярное выражение.

Другим подходом был бы конечный автомат, который считывает и анализирует данные. Если по какой-либо причине запись журнала занимает более одной строки, это может потребоваться.

Некоторые ссылки, связанные с конечным автоматом:

A очень простой конечный автомат, написанный на C: http://snippets.dzone.com/posts/show/3793

Много кода, связанного с Python, но некоторые разделы универсально применимы: http://www.ibm.com/developerworks/library/l-python-state.html

0 голосов
/ 19 июля 2012

Если ваша цель - запросить данные журнала IIS с помощью LINQ. Затем я предлагаю вам переместить данные журнала Raw IIS в базу данных и выполнить запрос к базе данных с помощью LINQ. Этот пост в блоге может помочь.

http://getsrirams.blogspot.in/2012/07/migrate-iislog-data-to-sqlce-4-database.html

...