Спасибо за ваше время и извините за это длинное сообщение!
Моя рабочая среда
Linux C / C ++ (но я новичок в платформе Linux)
Мой вопрос вкратце
В программном обеспечении, над которым я работаю, мы пишем ЛОТ сообщений журнала в локальные файлы , которые позволяют быстро увеличивать размер файла и, наконец, используют весь диск пространство (уч!). Нам нужны эти сообщения журнала для устранения неполадок , особенно после выпуска программного обеспечения на сайт клиента. Я считаю, что, конечно, недопустимо занимать все дисковое пространство компьютера клиента, , но я не знаю, как с этим справиться . Так что Мне интересно , есть ли у кого-нибудь хорошая идея здесь Более подробная информация приведена ниже.
Что я НЕ спрашиваю
1). Я НЕ запрашиваю рекомендованную библиотеку журналов C ++. Мы сами написали регистратор.
2). Я НЕ спрашиваю о том, какие детали (такие как отметка времени, идентификатор потока, имя функции и т. Д.) Должны быть записаны в сообщении журнала. Некоторые предложения можно найти здесь .
Что я сделал в своем программном обеспечении
Я разделяю сообщения журнала на 3 категории:
SYSTEM: регистрировать только важные шаги в моем программном обеспечении. Пример: внешний вызов метода интерфейса моего программного обеспечения. Идея заключается в том, что из этих сообщений мы можем видеть, что обычно происходит в программном обеспечении. не так много таких сообщений.
ОШИБКА: не регистрируется только ошибка, например, идентификатор не найден. Обычно не так много таких сообщений.
ИНФОРМАЦИЯ: Зарегистрируйте подробные шаги, выполняемые в моем программном обеспечении. Например, когда вызывается метод интерфейса, сообщение журнала SYSTEM записывается, как упомянуто выше, и вся процедура вызова во внутренние модули в методе интерфейса будет записываться с сообщениями INFO. Идея заключается в том, что эти сообщения могут помочь нам определить подробный стек вызовов для устранения неполадок или отладки. Это источник проблемы использования дискового пространства : всегда есть SO MANY INFO сообщений, когда программное обеспечение работает нормально.
Мои попытки и мысли
1). Я пытался не записывать никаких сообщений журнала INFO. Это решает проблему с дисковым пространством, но я также терял много информации для отладки. Подумайте об этом : мой клиент находится в другом городе, и часто туда ездить дорого. Кроме того, они используют интранет, который на 100% недоступен извне. Поэтому: мы не всегда можем отправить инженеров на место, как только они столкнутся с проблемами; мы не можем начать сеанс удаленной отладки. Таким образом, файлы журнала, я думаю, являются единственным способом, который мы могли бы использовать, чтобы выяснить причину проблемы.
2). Может быть, я мог бы сделать стратегию ведения журнала настраиваемой во время выполнения (в настоящее время это до запуска программного обеспечения), то есть: при обычном времени выполнения программа записывает только журналы SYSTEM и ERROR; когда возникает проблема, кто-то может изменить конфигурацию ведения журнала, чтобы можно было регистрировать сообщения INFO. Но все же: кто может изменить конфигурацию во время выполнения? Может быть, мы должны обучить администратора программного обеспечения?
3). Может быть, я всегда смогу включить регистрацию сообщений INFO, но периодически упаковывать файлы журналов в сжатый пакет? Хмм ...
Наконец-то ...
Каков ваш опыт в ваших проектах / работе? Любые мысли / идеи / комментарии приветствуются!
EDIT
СПАСИБО за все ваши усилия !!! Вот краткое изложение ключевых моментов из всех ответов ниже (и я дам им попытку):
1). Не используйте большие файлы журнала. Используйте относительно маленькие.
2). Периодически обрабатывайте самые старые из них (либо удалите их, либо заархивируйте и поместите в большее хранилище).
3). Реализуйте настраиваемую стратегию ведения журнала.