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

Вниз

Вопросы по создаю Log а.   Найти похожие ветки 

 
О-Сознание   (2013-04-01 17:05) [0]

1) В программе сделан обычный текстовый лог через TFileStream.
   Как правильно записывать в него: поток всегда открыт, в него и  записывать или постоянно открывать, записывать и закрывать?

2) Как сделать, чтобы лог сохранился даже при синем экране смерти?
   Где-то, а где не помню, говорилось, что такое делается через мьютекс.

3) В каком интервале выполняется Win. Flush?
   Сколько в него влазит?

4) В какой периодичностью вызывать Flush?
   Чтобы не чувствовались лаги.

Спасибо.


 
Дмитрий С ©   (2013-04-01 17:24) [1]


>  поток всегда открыт

Смотря сколько процессов пишут в лог. В общем тебе нужно как то синхронизировать записи в него.

В любом случае после каждой записи делай FlushFileBuffers(LogStream.Handle);

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


 
clickmaker ©   (2013-04-01 17:27) [2]

1) Если нужна гарантия, что записанные только что данные не пропадут даже при выдергивании шнура из розетки, то открывать-записывать-закрывать, либо делать Flush после каждой записи.
2) см. 1) Причем тут мьютекс, я не понял...
3) Flush сбрасывает файловый буфер на диск. Интервал, понятно, зависит от скорости записи, но в любом случае он не слишком критичен.


 
брат Птибурдукова   (2013-04-01 17:36) [3]


> Причем тут мьютекс, я не понял...
Вероятно, пока мютекс занят, компьютер нельзя выключить или перезагрузить.


 
clickmaker ©   (2013-04-01 17:37) [4]

> пока мютекс занят, компьютер нельзя выключить или перезагрузить

да ну? первый раз слышу... И из сети не выдернуть? )


 
Ega23 ©   (2013-04-01 17:39) [5]


> И из сети не выдернуть? )

На материнке где-то батарейка есть.


 
брат Птибурдукова   (2013-04-01 17:42) [6]


> И из сети не выдернуть?
Ну да. Выдёргивание из сети и бсоды бессильны.


 
О-Сознание   (2013-04-01 17:45) [7]



Доп. вопросы:

5) Какое ограничение на размер лога?

6) Что делать, если его достигли?



 
О-Сознание   (2013-04-01 17:47) [8]


> Дмитрий С ©   (01.04.13 17:24) [1]
>
> Если ты пишешь в лог так много, что возможны лаги - то подумай
> над эффективностью этого лога


Допустим это лог игры.
Где при Flush могут быть тормоза.

В программе с обычными интерфейсом такое сложнее заметить.

И вообще, Flush тормозит, я просто слышал об этом, но не видел сам.


 
clickmaker ©   (2013-04-01 17:47) [9]

5) А чего мелочиться? Делай сразу метров 10. Обеспечишь чтением надолго.
6) Радоваться. Не каждому удается его достигнуть. Особенно в первый раз.


 
Павиа   (2013-04-01 17:48) [10]

А в ноутбуках на часах отдельная батарейка или они от общего питаются?


 
О-Сознание   (2013-04-01 17:49) [11]


> clickmaker ©   (01.04.13 17:47) [9]
>
> 5) А чего мелочиться? Делай сразу метров 10. Обеспечишь
> чтением надолго.


Т.е. проверять Stream.Size при записи?


 
брат Птибурдукова   (2013-04-01 17:51) [12]


> Где при Flush могут быть тормоза.
пиши не на flush, а прямо на винчестер, я всегда так делаю


 
clickmaker ©   (2013-04-01 17:54) [13]

> Допустим это лог игры.
> Где при Flush могут быть тормоза

там что, каждое движение мыши пишется?


 
О-Сознание   (2013-04-01 18:13) [14]


> clickmaker ©   (01.04.13 17:54) [13]
>
> > Допустим это лог игры.
> > Где при Flush могут быть тормоза
>
> там что, каждое движение мыши пишется?


Что в буффере накопилось, то и получается пишется.


> брат Птибурдукова   (01.04.13 17:51) [12]
>
>
> > Где при Flush могут быть тормоза.
> пиши не на flush, а прямо на винчестер, я всегда так делаю


В смысле?
Пишу в TFileSteam, он разве сразу на винчестер пишет?


 
Игорь Шевченко ©   (2013-04-01 18:27) [15]

чем eventlog не устраивает ?


 
clickmaker ©   (2013-04-01 18:35) [16]

я лично писал через CreateFile в режиме разделения по чтению 1 раз, потом WriteFile, потом CloseHandle 1 раз. Можно периодически делать FlushFileBuffers, либо CreateFile с флагом FILE_FLAG_NO_BUFFERING


 
О-Сознание   (2013-04-01 19:23) [17]


>  Игорь Шевченко ©   (01.04.13 18:27) [15]
>
> чем eventlog не устраивает ?


Вы про ReportEvent?


 
Игорь Шевченко ©   (2013-04-01 20:20) [18]


> Вы про ReportEvent?


да


 
Eraser ©   (2013-04-02 00:05) [19]


> О-Сознание   (01.04.13 17:05) 

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

ReportEvent вещь хорошая, но далеко не всегда годная, все зависит от того, что нужно логировать, в каких объемах и в каком формате.


 
Германн ©   (2013-04-02 02:43) [20]


> Игорь Шевченко ©   (01.04.13 18:27) [15]
>
> чем eventlog не устраивает ?

Для отладки программы считаю неправильным использовать системный журнал.
А автор вроде об отладке и заботится.
Но тут главное то, на каком компьютере записывается сей журнал. Если на своём, то пожалуйста. Если на компьютере клиента/заказчика, то пошли бы вы все на фиг.



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

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

Наверх




Память: 0.51 MB
Время: 0.007 c
15-1364654871
TUser
2013-03-30 18:47
2013.09.08
Умер Леонид Мацих


15-1364373642
brother_
2013-03-27 12:40
2013.09.08
Ностальгия по OS


15-1365095139
Аббат Пиккола
2013-04-04 21:05
2013.09.08
Введение единого обязательного языка программирования


11-1247762524
Ruzzz
2009-07-16 20:42
2013.09.08
Как вы работаете с RES файлами?


15-1364821503
О-Сознание
2013-04-01 17:05
2013.09.08
Вопросы по создаю Log а.