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!");

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