Singleton mode : Create global objects with local static (non-local static possible initialization problems)
Select One of the implementations (Std::cerr, printf, file) by #ifdef, #ifndef, #if defined, and other conditional compilations
Setting some default values through environment variables
if"ORO_LOGLEVEL"0 ){...}
Using nested classes to manage internal implementation log level (Info, Waring, Error) control
class Logger { struct D; D* d; //}
Use the constructors and destructors of local variables to set the function associated with the scope .
Logger::In::Instd::string& modname) : oldmod( Logger::log().getLogModule() ) // 记录当前设置,用于恢复{ Logger::log().in(modname); // 在构造函数中设置某些功能}Logger::In::~In(){ Logger::log().out(oldmod); // 离开作用域,在析构函数中恢复}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Design of Orocos Logger class