Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2014.11.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





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


15-1396171437
KSergey
2014-03-30 13:23
2014.11.16
С# и проверка абстрактных методов


15-1397334602
Юрий
2014-04-13 00:30
2014.11.16
С днем рождения ! 13 апреля 2014 воскресенье


15-1396970740
Hp2000
2014-04-08 19:25
2014.11.16
Drivers


11-1255299161
Валера
2009-10-12 02:12
2014.11.16
Splash Screen. Как сделать ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский