Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.11.16;
Скачать: CL | DM;

Вниз

Чтение последних записанных строк из файла   Найти похожие ветки 

 
goody ©   (2013-11-14 09:52) [0]

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


 
Ega23 ©   (2013-11-14 10:12) [1]

ужас какой.


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


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

А
А
А
А
А

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


 
goody ©   (2013-11-14 10:21) [2]

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


 
Ega23 ©   (2013-11-14 10:26) [3]


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


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

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

A
A
A
A
A

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


 
brother ©   (2013-11-14 10:28) [4]

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

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

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

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


 
brother ©   (2013-11-14 10:29) [5]

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

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


 
Ega23 ©   (2013-11-14 10:31) [6]


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


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


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

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


 
goody ©   (2013-11-14 10:36) [8]

Спасибо.


 
megavoid ©   (2013-11-14 13:04) [9]

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

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


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


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

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


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

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


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

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


 
DVM ©   (2013-11-15 10:15) [13]


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

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


 
Ega23 ©   (2013-11-15 10:32) [14]

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


 
DVM ©   (2013-11-15 11:44) [15]


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

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


 
Ega23 ©   (2013-11-15 11:49) [16]


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


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


 
DVM ©   (2013-11-15 13:08) [17]


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

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


 
Ega23 ©   (2013-11-15 13:23) [18]


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


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


 
Anatoly Podgoretsky ©   (2013-11-17 20:26) [19]

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


 
DevilDevil ©   (2013-11-19 09:58) [20]

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


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



Страницы: 1 вся ветка

Текущий архив: 2014.11.16;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.007 c
4-1270297417
tippa
2010-04-03 16:23
2014.11.16
Вот есть PostMessage и SendMessage


15-1396861111
ТимоховД
2014-04-07 12:58
2014.11.16
Windows 2008 и шрифты иероглифами


15-1394183038
Eleon
2014-03-07 13:03
2014.11.16
Интрнет-трафик


15-1396850341
aka
2014-04-07 09:59
2014.11.16
полив клубники


15-1397257511
Германн
2014-04-12 03:05
2014.11.16
С днем космонавтики всех!