码迷,mamicode.com
首页 > 其他好文 > 详细

orocos Logger 类的设计

时间:2015-08-17 17:21:07      阅读:109      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!