Здравствуйте, xobotik, Вы писали:
X>КО? И каждый раз при записи в лог создавать экземпляр класса и вызывать функцию?
X>Вроде написал сценарий использования или напрасно ?
зачем все эти извращения с недосинглтонами, гонками и прочей ахинеей, когда можно сделать просто:
//loggger.h
//Интерфейс лога, подключается там, где нужно писать в лог
log(severety, message);
//logger_factory.h
//Интерфейс фабрики логгера, подключается только в одном файле - в main.cpp
initLog(filename)
deinitLog();
//logger.cpp
//Имплементация логгера
#include "loggger.h"
#include "logger_factory.h"
class Log {
open(filename);
close();
writeToLog(severety, message);
};
Log global_log;
initLog(filename) {
global_log.init(filename);
}
deinitLog(
global_log.close();
}
log(severity, message) {
global_log.writeToLog(severity, message);
}
и наконец main
#include "logger_factory.h"
main() {
initLog( get_new_log_name() );
....
deinitLog();
}
кому нужен лог — подключает logger.h и пишет в лог. Логгер инициализируется один раз явно в main. Код понятен даже ребёнку. Работает стабильно. Ошибиться очень тяжело. Повторяю вопрос — "Зачем делать через ж-у то, что можно сделать прямо и очевидным образом?"