Нужно написать многопоточный thread-safe wait-free exception-safe синглтон глобал логгер, который умеет логировать в cout,cerr файлы и так далее.
Нужно сделать наиболее простой интерфейс хендлера, который будет выглядеть как-то так
class ILoggerHandle {
public:
virtual int log(std::string_view) const = 0;
virtual ~ILoggerHandle(){}
};
Важно, чтобы логгер умел:
1) Сохранять точное время конкретного лога.
2) Логи были в последовательны относительно времени.
3) По какой-то волшебной константе времени компиляции можно удалять из файла логи, если они устарели более чем на n единиц времени.
4) Логать в различные файлы одновременно или по отдельности, при этом предоставить удобный интерфейс для этого.
5) Иметь разные уровни( debug,trace, error, etc), можно взять из spdlog.