анализировать активный файл журнала - PullRequest
3 голосов
/ 18 октября 2010

Нужна небольшая помощь, чтобы начать работу над небольшим проектом, который у меня на уме некоторое время.

У меня есть файлы журналов, различающиеся по размеру в зависимости от того, как часто они очищаются от 50-500 МБ. Я хотел бы написать программу, которая будет отслеживать файл журнала, пока он активно записывается. когда он используется, он меняется довольно быстро, несколько сотен строк в секунду или около того. Большинство, если не все, примеры, которые я видел для чтения лог / текстовых файлов, просто открываются и читают содержимое файла в переменную, которую на самом деле невозможно выполнить каждый раз, когда файл изменяется в этой ситуации. Я не остановился на языке, чтобы написать это, но он на коробке с Windows, и я могу работать в .net flavors / java / или php (хех, не думаю, что php хорошо для этого подойдет), и, вероятно, может запутаться в другом язык, если у кого-то есть предложение для чего-то хорошо сложенного, чтобы справиться с этим.

По сути, я считаю, что то, что я ищу, вероятно, было бы лучше описать как высокоскоростной способ контроля текстового файла на предмет изменений и наблюдения за этими изменениями. Каждая написанная строка относительно мала. (менее 300 символов, поэтому в каждой строке данные невелики).

РЕДАКТИРОВАТЬ: изменить формулировку, чтобы, надеюсь, лучше описать, что я пытаюсь сделать. То есть написать программу, чтобы следить за файлом журнала для триггера, а затем сопоставить следующее действие с этим триггером. Поэтому мой вопрос здесь касается обработки файлов внутри языка программирования.

Я очень ценю любые мысли / комментарии.

Ответы [ 3 ]

0 голосов
/ 01 марта 2013

«Следите за файлом журнала» часть того, что вы описываете, это то, что делает tail.

Если вы планируете реализовать его в Java, вы можете проверить этот вопрос:Java IO реализация unix / linux "tail -f" и добавьте вашу логику триггера для чтения строк.

0 голосов
/ 02 декабря 2016

Я предлагаю не изобретать велосипед. Попробуйте использовать astic.co

enter image description here

Все эти приложения с открытым исходным кодом и бесплатны и способны контролировать (вместе) и инициировать действия на основе ввода.

filebeats - построчно считывает файл журнала (также поддерживает многострочные сообщения журнала) и отправляет его в logstash. Есть множество других грузоотправителей, которые вы можете использовать. logstash - будет принимать сообщения журнала, фильтровать их, добавлять теги и отправлять сообщения вasticsearch asticsearch - возьмет сообщения журнала и проиндексирует их, сохранит их. Он также способен выполнять действия на основе ввода kibana - это удобный веб-интерфейс для запроса и анализа данных. Или просто поместите его на приборную панель.

Надеюсь, это поможет.

0 голосов
/ 18 октября 2010

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

В противном случае вы можете использовать tail -f, получивего стандартный вывод и использование его в ваших целях ..

...