c++日志器的单例模式

Singletion pattern for C++ logger

本文关键字:单例模式 日志 c++      更新时间:2023-10-16

我需要设计一个记录器类,它将被所有其他类用于记录消息。目前,我正在每个类中创建logger的指针,并通过logger指针调用logger的方法来记录消息。我想以单例模式的方式设计它,它必须是线程安全的。谁能建议一个好的方法?

忘掉单例吧,把所有的东西都放在类static中。您可能希望提供宏来方便地访问日志方法,例如:

#define logdbg(fmt, ...) Log::log(__FUNCTION__, Log::LEVEL_DEBUG, fmt, ##__VA_ARGS__)

当作为单例实现时,它需要是:

#define logdbg(fmt, ...) Log::instance().log(__FUNCTION__, Log::LEVEL_DEBUG, fmt, ##__VA_ARGS__)