![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Чтение последних записанных строк из файла [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]ужас какой.
> Как их определить ?
Вот у меня следующие строки:
А
А
А
А
А
Какие из них новые?