|
Как правильнее организовать ведение журнала работы устройства на диске.. |
|
|
|
Aug 28 2007, 09:39
|
Частый гость
 
Группа: Свой
Сообщений: 158
Регистрация: 27-06-05
Из: Химки, Моск.обл.
Пользователь №: 6 334

|
Имеем контроллер, управляющий неким устройством. Сейчас по всем событиям, происходящим в процессе работы, в терминальный последовательный порт выдается информация о событии и реакции на него в текстовом виде (просматривается на подключенном ноутбуке-терминале). Теперь необходимо этот журнал работы вести на имеющимся в системе флеш-диске с файловой системой (FAT16 - все под DOSом). Ни как на ум не приходит красивое решение по ведению этого журнала. В предыдущем устройстве аналогичное делал - но там был сеансный режим работы (короткие сеансы с большими перерывами) и поэтому создавался каталог для журнала ("/LOG"), в нем каталог с текущей датой ("/LOG/070828/" для 28 августа 2007) и далее для текущего сеанса текстовый файл с именем, сформированным по времени начала сеанса ("/LOG/070828/13-25.log"). По окончании сеанса файл закрывался (fclose). Все было хорошо - и искать удобно, и при пропадании питания и других сбоях в худшем случае терялась информация только по последненму сеансу. Здесь же работа ведется непрерывно, хотя и события возникают не чаще 1 раза в секунду, даже в несколько секунд), поэтому вроде как нужен один файл, но тогда при пропадании питания (допустимая ситуация) файл будет не закрыт и вероятно потеряна записанная в него ранее информация. Да и при заполнении диска непонятно как с работать - нужно будет как-то удалять устаревшие записи, т.е. вести "перелопачивание" всего файла. Да скачивание такого файла по медленному порту терминала и ручной поиск информации по какому либо событию (оператором в случае разбора журнала работы) затруднен в текстовом файле в 16 МБайт (объем флеш-диска). Значит разбивать на "короткие" файлы за небольшие промежутки времени? Но это как-то нелогично, ведь процесс работы устройства непрерывен. Да и индексироваться для поиска тоже надо как-то будет. Да - формат сообщений в журнале (логе) менять нельзя - это текстовые строки (ASCIIZ) различной длины (но начинаются они всегда с даты-времени, одно сообщение не может занимать более одной строки), т.е. построить что-то двоичное структуроподбное нельзя. Кто как поступал в аналогичных ситуациях, и вообще, есть ли какие-нибудь правила по ведению логов?
|
|
|
|
|
 |
Ответов
|
Aug 30 2007, 12:48
|
Частый гость
 
Группа: Свой
Сообщений: 158
Регистрация: 27-06-05
Из: Химки, Моск.обл.
Пользователь №: 6 334

|
Цитата(vmp @ Aug 30 2007, 16:43)  Может быть заводить по одному файлу на каждый день? А слишком старые файлы удалять. Пусть буферами, свободныи местом и т.д. ОС занимается. Возможно, я уже думал, только день - многовато. При возможном (и допустимом выключении) пропадет журнал за целый день. Я думал минут по 5 делать, тогда надо как-то осмысленно файлы именовать, что бы была возможность поиска по дате/времени как оператором (при "разборе полетов"), так и контроллером. Правда что делать при корректировке времени - переименовывать все файлы? Как-то все сложно и запутанно получается.
|
|
|
|
Сообщений в этой теме
Alechin Как правильнее организовать ведение журнала работы устройства на диске.. Aug 28 2007, 09:39 rezident Вы определите для себя какое самое уязвимое место ... Aug 28 2007, 11:37 Alechin Хорошо, спрошу немного конкретнее - как организова... Aug 30 2007, 10:29  vmp Цитата(Alechin @ Aug 30 2007, 16:48) Возм... Aug 30 2007, 13:06 Elvin Как с решением задачки? Много времени прошло Если... Sep 24 2007, 08:24 Alechin ЦитатаКак с решением задачки?
Пока никак - эту зад... Sep 24 2007, 10:49  vshemm Не очень понятно, почему нельзя поменять файловую ... Sep 28 2007, 16:04   редактор Лучший вариант - организовать подхват питания. В н... Oct 3 2007, 10:37    vshemm Цитата(редактор @ Oct 3 2007, 14:37) Лучш... Oct 3 2007, 16:47     редактор Все зависит от конкретной системы.
Если это тумбле... Oct 5 2007, 12:25 oran-be Вообще вся проблема создания таких систем упираетс... Nov 21 2007, 15:10
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|