Возможность записи логов в файл - Logger.cpp/.h
В терминал - Logger.cpp/.h
Взаимодействие по идиоме RAII Logger.cpp, File.h
Перегрузка оператора вывода в поток - использование в Adapter.cpp, реализация в Unit.cpp и Base.cpp
Переключение между разным логированием при помощи паттерна Прокси - ProxyLogger.cpp/.h
Разный формат записи при помощи паттерна Адаптер -Adapter.cpp/.h
Всё ок, но у вас беда с RAII. идея в том, чтобы файл захватывал не синглтон над fstream, а непосредственно объект, который с ним работает. В вашем слкчае это должен быть логгер
Возможность записи логов в файл - Logger.cpp/.h В терминал - Logger.cpp/.h Взаимодействие по идиоме RAII Logger.cpp, File.h Перегрузка оператора вывода в поток - использование в Adapter.cpp, реализация в Unit.cpp и Base.cpp Переключение между разным логированием при помощи паттерна Прокси - ProxyLogger.cpp/.h Разный формат записи при помощи паттерна Адаптер -Adapter.cpp/.h