【问题标题】:Boost::log with static factory methodsBoost::log 与静态工厂方法
【发布时间】:2014-02-25 14:49:49
【问题描述】:

我尝试使用 boost::log 库来实现日志记录。我将记录器声明为私有类成员,但是当我来到一个带有静态工厂方法的类时,没有计算出一个问题。 错误信息是: 在静态成员函数中无效使用成员“MyObjectContainer::slg”。 我想避免全局记录器,还有其他解决方案吗?

提前致谢。

【问题讨论】:

    标签: c++ factory boost-log


    【解决方案1】:

    有几种解决方案。

    1)您可以在静态函数中使用局部变量。像这样:

    void MyClass::MyStaticmemberFunction()
    {
        boost::log::sources::logger my_logger;
        BOOST_LOG(my_logger) << "log message.";
    }
    

    2)您可以将指向您的类对象的指针作为函数参数。在这种情况下,您还应该将“get function”添加到您的课程中。像这样:

    // regular member function (not static) - "get function"
    boost::log::sources::logger_mt MyClass::GetLogger()
    {
        return m_member_logger;
    }
    
    void MyClass::MyStaticMemberFunction(MyClass *my_class_object)
    {
        if (!my_class_object)
        {
            boost::log::sources::logger local_logger;
            BOOST_LOG(local_logger) << "MyStaticFunction:: invalid input data.";
            return;
        }
        BOOST_LOG(my_class_object->GetLogger()) << "log message.";
    }
    

    问候。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      相关资源
      最近更新 更多