ICE内部的logger应用

        ICE为软件设计基础的日志功能,当我们的软件在后台运行需要保存这些日志,那么我们该怎么配置呢?下述内容将做简单解释:

1、Logger作为提供纯虚函数接口

class ICE_API Logger : virtual public ::Ice::LocalObject
{
public:

    typedef LoggerPtr PointerType;

    virtual void print(const ::std::string&) = 0;

    virtual void trace(const ::std::string&, const ::std::string&) = 0;

    virtual void warning(const ::std::string&) = 0;

    virtual void error(const ::std::string&) = 0;

    virtual ::Ice::LoggerPtr cloneWithPrefix(const ::std::string&) = 0;
};
2、LoggerI作为实现Logger纯虚函数接口
class LoggerI : public Logger
{
public:

    LoggerI(const string& prefix, const string& file);
    ~LoggerI();

    virtual void print(const std::string& message);
    virtual void trace(const std::string& category, const string& message);
    virtual void warning(const std::string& message);
    virtual void error(const std::string& message);
    virtual LoggerPtr cloneWithPrefix(const std::string&);
};
3、配置文件可以配置三种类型的日志

1)Ice.LogFile=a.txt

应用程序或通信管理器使用的日志。

2)Ice.StdOut=b.txt

控制台普通输出的日志,包括iostream的 cout或printf函数。

3)Ice.StdErr=c.txt

控制台错误输出的日志,包括iostream的 cerr。

4)Ice.ProgramName=demoserver.exe
Ice.ProgramName作为设置指定程序名称参数,否则将以默认的全路径程序名称。这个主要功能的影响在于Ice.LogFile输出程序名称。

4、范例

  Ice::Print

  Ice::Error

  Ice::Warning

  Ice::Trace

       上面的类简化了输出格式,具有鲜明的实现。如果您的系统需要实现如printf(int type, ...),那么您可以在现有的集成输出类上继承。   

    Ice::CommunicatorPtr ic = communicator();

    const Ice::LoggerPtr _logger = ic->getLogger();

    Ice::Error out1(_logger);
    out1 << "!!This is an error!\n";

    Ice::Warning out2(_logger);
    out2 << "-!This is a warning!\n";    

    Ice::Trace out3(_logger,  "title");
    out3 << "--This is a tracing!\n";

    _logger->print("liuxuezong");    
    _logger->warning("EntropyDaemon because OpenSSL initialization is disabled.");
    _logger->trace("This is my file!", "title");
    _logger->error("error!");

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章