Форум: "Прочее";
Текущий архив: 2013.09.08;
Скачать: [xml.tar.bz2];
ВнизВопросы по создаю 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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.003 c