Периодически читать данные из файла журнала - PullRequest
1 голос
/ 30 ноября 2011

Я создаю файл журнала и хочу, чтобы я периодически читал данные, не читая их с самого начала может кто-нибудь помочь.

Ответы [ 4 ]

4 голосов
/ 30 ноября 2011

Откройте файл и получите цикл, который,

  • получите размер и сравните с размером, который вы уже прочитали.
  • если размер увеличился, прочитайте столько байтов и не более. Это означает, что вы можете прочитать больше позже.
  • если размер уменьшился, закройте файл и начните снова.

Вы можете использовать FileInputStream или RandomAccessFile.

1 голос
/ 30 ноября 2011

используйте unix команду 'tail', опции '-f' и '-F' для одной и той же команды очень удобны

См. Здесь http://www.thegeekstuff.com/2009/08/10-awesome-examples-for-viewing-huge-log-files-in-unix/ для примеров или просто Google вокруг примеров.

1 голос
/ 30 ноября 2011

Если вы хотите запускать программу для периодического чтения вашего файла журнала, то вы можете использовать планировщики, например, Quartz Scheduler , чтобы периодически запускать его.

0 голосов
/ 30 ноября 2011

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

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

app_access.2011-11-28.log, 
app_access.2011-11-29.log, 
app_access.2011-11-30.log,
...

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

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

...