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