Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Чтение последних записанных строк из файла [D2005, 2003]


goody ©   (2013-11-14 09:52:00) 

Доброго времени суток всем.
Есть задача нужно читать новые строки из лог файла.
Примерно себе так представляю:
Следим за изменениями в каталоге файла.
Потом читаем  новые строки и  так далее...
Вопрос в том чтобы считывать только последние новые строки.
Как их определить ?


DevilDevil   (2013-11-19 09:58:00) [1]

> SergP ©   (14.11.13 23:52) [11]
> запоминаем длину файла, какой она была до добавления строк.
>
> После добавления новых строк смотрим файл с позиции, равной
> запомненной ранее длине файла.


самый толковый ответ


Anatoly Podgoretsky   (2013-11-17 20:26:00) [2]

Для меня один большой лучше кучи маленьких


Ega23   (2013-11-15 13:23:00) [3]


> Я по 10 мб обычно ротацию делаю, вроде нормально, Notepad++
> открывает такие логи довольно быстро, если надо глазами смотреть.


Ну на том железе, которое у меня было, когда я такие логи активно писал, 10 метров было многовато.
Впрочем, не в метрах дело, а в сути. Лучше иметь много небольших файлов, чем один огроменный.


DVM   (2013-11-15 13:08:00) [4]


>  Просто в лог больше мегабайта как-то некузяво писать, тем
> более текстовый. Неудобно потом.

Я по 10 мб обычно ротацию делаю, вроде нормально, Notepad++ открывает такие логи довольно быстро, если надо глазами смотреть.


Ega23   (2013-11-15 11:49:00) [5]


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


Да это-то понятно. Просто в лог больше мегабайта как-то некузяво писать, тем более текстовый. Неудобно потом. Я обычно в таком случае их по времени создаю. Набрал больше какого-то определённого предела - закрыли файл, сохранили, начали новый с текущим временем в имени.


DVM   (2013-11-15 11:44:00) [6]


> Ega23 ©   (15.11.13 10:32) [14]
> Лог должен быть маленьким. Не больше мегабайта.

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


Ega23   (2013-11-15 10:32:00) [7]

Лог должен быть маленьким. Не больше мегабайта.


DVM   (2013-11-15 10:15:00) [8]


> SergP ©   (14.11.13 23:52) [11]
> запоминаем длину файла, какой она была до добавления строк.
>
> После добавления новых строк смотрим файл с позиции, равной
> запомненной ранее длине файла.

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


Inovet   (2013-11-15 00:24:00) [9]

Если возможно держать файл открытым на чтение в расшаренном режиме, так ещё проще.


SergP   (2013-11-14 23:52:00) [10]

запоминаем длину файла, какой она была до добавления строк.
После добавления новых строк смотрим файл с позиции, равной запомненной ранее длине файла.


KilkennyCat   (2013-11-14 20:30:00) [11]


> Ega23 ©   (14.11.13 10:31) [6]
>
> > я так понимаю, что 4 и 5...
>
>
> Ну правильно.

ну неправильно. 3 и 4.


megavoid   (2013-11-14 13:04:00) [12]

tail надо? так Unixutils же (unixtools) :)

http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/tail.c


goody   (2013-11-14 10:36:00) [13]

Спасибо.


brother   (2013-11-14 10:31:00) [14]

да, что-то поспешил) да просто скучно)


Ega23   (2013-11-14 10:31:00) [15]


> я так понимаю, что 4 и 5...


Ну правильно. Как определить - ты уже тоже написал.
Я просто хотел, чтобы товарищ чуть-чуть подумал.


brother   (2013-11-14 10:29:00) [16]

> Какие новые строки добавились?

я так понимаю, что 4 и 5...


brother   (2013-11-14 10:28:00) [17]

> Следим за изменениями в каталоге файла.

записываем где-то кол-во строк, что уже обработано...

> Как их определить ?

после выявления изменений - считаем кол-во сток, вычитаем, кол-во, что уже обработаны, остаток это новые строки, что не обрабатывали еще


Ega23   (2013-11-14 10:26:00) [18]


> Файл текстовый строки добавляются в конец файла, новы строки
> те которые были добавлены после последнего чтения файла.


Вот был файл
A
A
A

Я его прочитал.
Теперь файл стал такой:

A
A
A
A
A

Какие новые строки добавились?


goody   (2013-11-14 10:21:00) [19]

Файл текстовый строки добавляются в конец файла, новы строки те которые были добавлены после последнего чтения файла.


Ega23   (2013-11-14 10:12:00) [20]

ужас какой.


> Как их определить ?


Вот у меня следующие строки:

А
А
А
А
А

Какие из них новые?


Наверх

Титульная страница Поиск, карта сайта Написать письмо