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

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

Реализация лог-файла.


Страницы:   1 2 3

Владислав ©   (2005-12-08 13:59:00) 

Приветствую, Мастера.

Необходимо реализовать запись строковых данных в лог файл. Лог файл должен иметь ограниченный размер. Новые строки добавляются в конец файла. При превышении размера лог-файла установленного ограничения, из начала файла должны удаляться старые строки.
Кроме этого, хотелось бы, чтобы буфер файла периодически сбрасывался на диск, чтобы можно было просматривать лог во время работы приложения.
Что-то особенное, для обеспечения целостности данных не нужно, но и половину строки (обрезанную строку) тоже не хотелось бы оставлять.
Какие есть варианты решения этой задачи?

На уме пока только "самое очевидное" :) Сдвигание информации, содержащейся в файле в начало, при превышении размера, и дописывание новой информации в конец файла. Но что-то мне подсказывает, что это не есть хорошо :)


Владислав   (2005-12-08 14:30:00) [41]


> Anatoly Podgoretsky ©   (08.12.05 14:21) [8]


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


Anatoly Podgoretsky   (2005-12-08 14:21:00) [42]

Владислав ©   (08.12.05 14:14) [6]
При таких размерах надо очень потрудиться, что бы это было оптимально и не нанесло вреда, ни писателю, ни читателю и без ощутимых задержек. При таких размерах тяжеловать будет и с локальной базой.


Владислав   (2005-12-08 14:15:00) [43]


> Fay ©   (08.12.05 14:06) [4]


Я утверждал обратное? :)


Владислав   (2005-12-08 14:14:00) [44]


> Digitman ©   (08.12.05 14:05) [2]
>
> уточни - какой ...
>
> это важно для простоты решения


Этот параметр задается пользователем. По умолчанию лог файл вообще отключен, а размер файла установлен 50 кБ. Сколько же может установить пользователь, я заранее знать не могу. У этой опции ограничение (2^31 - 1)кБ.


dracula   (2005-12-08 14:09:00) [45]

Да это точно =)


Fay   (2005-12-08 14:06:00) [46]

2 Владислав ©   (08.12.05 13:59)
> Сдвигание информации, содержащейся в файле в начало,
> при превышении размера, и дописывание новой информации
> в конец файла

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


dracula   (2005-12-08 14:05:00) [47]

1. Делаеш StringList, и просто начинаешь удалять первые строки из него, при этом добавляя последнии и переодически сохраняешь его в файл.
2. Создаёшь файл открытый на запись и чтение, его можно будет просматривать и в тоже время изменять, делаешь то же самое что и со списком строк, удаляешь первую строку добавляешь в конец новую, но первый вариант мне кажется проще будет.
Можно ещё кучу всего придумать... ну может  кто ещё чего добавит.


Digitman   (2005-12-08 14:05:00) [48]


> Лог файл должен иметь ограниченный размер


уточни - какой ...

это важно для простоты решения


Владислав   (2005-12-08 14:00:00) [49]

Забыл указать.
Если это важно, то Win9x, Win2k, WinXP, D7.


Страницы:   1 2 3

Наверх

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