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