Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1364877349
Piligrim
2013-04-02 08:35
2013.09.08
Delphi-приложения на многоядерных системах


1-1313145196
ForumReader
2011-08-12 14:33
2013.09.08
Передача текста функции как параметра функции. Проблема...


11-1248039464
Ruzzz
2009-07-20 01:37
2013.09.08
TrayIcon и WM_CLOSE


2-1356116402
Гест
2012-12-21 23:00
2013.09.08
Как сделать исчезающее Popup меню


1-1312275277
Человек
2011-08-02 12:54
2013.09.08
Динамическое изменение TrayIcon.Icon





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский