首页 > 其他 > 详细

orocos Logger 类的设计

时间:2015-08-17 17:18:30      阅读:253      评论:0      收藏:0      [点我收藏+]

单例模式: 通过 local static 创建全局对象(非local static 可能带来的初始化问题)

通过#ifdef, #ifndef, #if defined,等条件编译来选择其中一个实现(std::cerr, printf, file)

通过环境变量来设置某些默认值

if ( getenv( "ORO_LOGLEVEL" ) != 0 )
{...}

使用嵌套类来管理内部实现 log level (Info、Waring、 Error) 控制

class Logger
 {
    struct D;
     D* d;  //
}

使用局部变量的构造函数析构函数来设置跟作用域相关的功能。

Logger::In::In(const std::string& modname)
         : oldmod( Logger::log().getLogModule() )  // 记录当前设置,用于恢复
{
    Logger::log().in(modname);  // 在构造函数中设置某些功能
}
Logger::In::~In()
{
    Logger::log().out(oldmod);  // 离开作用域,在析构函数中恢复
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

orocos Logger 类的设计

原文:http://blog.csdn.net/gw569453350game/article/details/47727235

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!