Регистрация небольших объектов низкого уровня - PullRequest
0 голосов
/ 27 марта 2020

Если мы находимся в среде C ++, особенно в той, в которой мы боремся за сохранение низкого уровня использования ресурсов, как мы должны добавить ведение журнала для объектов очень низкого уровня, которые могут иметь проблемы с пользователями этих объектов?

Предположим, у нас есть объект высокого уровня FileManager, который управляет файлами. Он имеет внутреннюю карту File объектов. Пользователь может легко ввести неверный путь к файлу при создании File для управления. Из низкоуровневого объекта мы можем обнаружить эту ошибку

bool File::CheckPath(std::string path){
   if(path[0] != "/"){
      std::cout << "missing / at start" << std::endl;
   }
   if(path[path.size() - 1] != "/"){
      std::cout << "missing / at end" << std::endl;
   }
}

Но мы хотим, чтобы она была частью нашей системы регистрации, а не printf или cout. Конечно, мы можем обнаруживать ошибки из FileManager, а File может возвращать коды ошибок, но мы знаем, что в будущем другие модули захотят использовать File и не хотим, чтобы каждый модуль имел обрабатывать каждую ошибку с сообщением журнала копирования-вставки. Поскольку мы также можем управлять 100 или 1000 с File с, мы не хотим, чтобы объект ведения журнала находился в каждом File с уникальными дескрипторами ведения журнала и т. Д.

Как тогда мы предоставляем ведение журнала инфраструктура для объектов низкого уровня?

...