Есть приложение на с++, которое пишет данные в лог.
Используется syslog(LOG_INFO,"Init"), к примеру. Данные записываются в /var/log/messages
При перезагрузке системы данные из /var/log/messages удаляются.
Есть ли способ сделать так, чтобы логи не удалялись? Предполагаю, что нужно использовать syslog.conf
Как можно решить проблему?
Операционная система: busybox/linux
Ответ
это, вероятно, т.н. «embedded»-система. и каталог /var (или только /var/log) находится на временной файловой системе (скорее всего, типа tmpfs), которая расположена в оперативной памяти, и создаётся при загрузке системы.
пример проверки (это дистрибутив openwrt):
$ df /var
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 63268 380 62888 1% /tmp
$ ls -ld /var
lrwxrwxrwx 1 root root 4 Sep 17 2013 /var -> /tmp
делается это с целью сохранения ресурса накопителя информации, который в таких устройствах обычно может выдержать довольно ограниченное количество операций записи.
не зная подробностей об используемом вами дистрибутиве, могу предположить лишь такие общие варианты решения:
изменить вашу программу, чтобы она писала данные в файл, расположенный на блочном устройстве хранения информации;
изменить систему инициализации вашего дистрибутива так, чтобы каталог /var или /var/log или хотя бы файл /var/log/messages располагался не в памяти, а на блочном устройстве;
изменить конфигурацию используемого вами системного логгера так, чтобы он записывал не в файл /var/log/messages, а в файл, расположенный на блочном устройстве. или, например, отсылал логируемую информацию по сети на другой компьютер.
Комментариев нет:
Отправить комментарий