Opticks 日志提供两种方式:一种是基于Windows操作系统日志,另一种是基于MessageLogMgr类实现的日志。下面分别讲解这两种日志的实现方式以及在Opticks中的用途
具体的实现类是SystemServicesImp,该类能够通过宏定义分别支持windows平台与linux平台,windows平台采用RegisterEventSource
、DeregisterEventSource、ReportEvent三个函数实现具体的功能
在linux下则采用openlog、closelog、syslog 。主要函数以及功能说明。
类名称 | 函数接口 | 功能 |
SystemServicesImp
| WriteLogInfo
| 一般系统日志。可以用来记录应用用户操作、系统运行状态等。 |
WriteLogWarning
| 警告日志。 | |
WriteLogError
| 错误日志。程序中的异常等。 |
SystemServicesImp采用单例设计模式设计。因此使用方便,例如系统中的任何地方都可以采用如下方式记录日志:
SystemServicesImp::instance()->WriteLogInfo(QString("%1Startup").arg(APP_NAME).toStdString());
如果需要查看日志文件需要右击>我的电脑>管理,打开计算机管理,在〉Windows日志>应用程序中找到>Opticks,双击如图查看详细信息
该功能采用日志文件的方式将应用系统的状态输出到日志文件中,以备日后查看。日志文件可以多个,采用MessageLogMgr进行日志管理。
class MessageLogMgrImp : public MessageLogMgr, public SubjectImp。
MessageLogMgrImp类多继承类。兼有日志与相应事件的能力。
类名称 | 函数接口 | 功能 |
MessageLogMgrImp | static MessageLogMgrImp* instance() | 单例模式,可以在程序中其他地方自由调用 |
static void destroy(); | 析构函数。 | |
virtual void setPath( const std::string& path);
| 设置日志记录的存储路径。当路径改变时,激发通知事件,所有注册事件将被通知 | |
virtual MessageLog* createLog( const std::string& logName);
| 建立日志文件,默认保存在上一次设置的路径上,名称为logName,并将所建立的日志名称按照索引保存在mLogMap中以备下次再次打开写入使用。如果logName 为空,则返回NULL。
| |
virtual MessageLog* getLog(const std::string& logName) const;
| 打开已经建立的日志,如果没有通过mLogMap找到,则返回NULL | |
virtual MessageLog* getLog() const;
| 获取系统默认日志文件。默认名称为string SessionItemImp::generateUniqueId()函数通过string SessionItemImp::generateUniqueId()获取的一个UID值 | |
virtual std::vector<MessageLog*> getLogs() const;
| 获取所有的MessageLog数据 | |
void clear();
| 清楚所有MessageLog数据,并通知所有的注册事件。 | |
virtual const std::string& getObjectType() const;
| 返回MessageLogMgrImp类名称 | |
virtual bool isKindOf(const std::string& className) const;
| 如果className 为MessageLogMgrImp或者 MessageLogMgr则为真
| |
bool attach(const std::string& signal, const Slot& slot)
| 添加信号的响应事件 | |
bool detach(const std::string& signal, const Slot& slot)
| 移除信号的响应事件 | |
void enableSignals(bool enabled)
| 信号使能 | |
bool signalsEnabled() const
| 返回信号使能状态 |