init
This commit is contained in:
128
device/deviceinfo.cpp
Normal file
128
device/deviceinfo.cpp
Normal file
@@ -0,0 +1,128 @@
|
||||
#include "deviceinfo.h"
|
||||
#include <QDateTime>
|
||||
#include "myexception.h"
|
||||
#include "exceptioncode.h"
|
||||
|
||||
|
||||
DeviceInfo* DeviceInfo::uniqueInstance = nullptr;
|
||||
DeviceInfo* DeviceInfo::instance() {
|
||||
if(!uniqueInstance) {
|
||||
uniqueInstance = new DeviceInfo;
|
||||
QDateTime now = QDateTime::currentDateTime();
|
||||
QString nowStr;
|
||||
nowStr = now.toString("yyyyMMdd_hhmmss");
|
||||
// 定义Info日志名称
|
||||
QString fNameInfo = QString("data/log/info/info_%1.log").arg(nowStr);
|
||||
QByteArray qbyInfo = fNameInfo.toLocal8Bit();
|
||||
char* fNameInfo_c = qbyInfo.data();
|
||||
// 获取日志文件句柄
|
||||
uniqueInstance->streamInfo = fopen(fNameInfo_c, "wt");
|
||||
if(uniqueInstance->streamInfo == nullptr)
|
||||
{
|
||||
fNameInfo = QString("info_%1.log").arg(nowStr);
|
||||
qbyInfo = fNameInfo.toLocal8Bit();
|
||||
char* fNameInfo_c = qbyInfo.data();
|
||||
// 获取日志文件句柄
|
||||
uniqueInstance->streamInfo = fopen(fNameInfo_c, "wt");
|
||||
}
|
||||
// 定义Alarm日志名称
|
||||
QString fNameAlarm = QString("data/log/alarm/alarm_%1.log").arg(nowStr);
|
||||
QByteArray qbyAlarm = fNameAlarm.toLocal8Bit();
|
||||
char* fNameAlarm_c = qbyAlarm.data();
|
||||
uniqueInstance->streamAlarm = fopen(fNameAlarm_c, "wt");
|
||||
if(uniqueInstance->streamAlarm == nullptr)
|
||||
{
|
||||
fNameAlarm = QString("alarm_%1.log").arg(nowStr);
|
||||
qbyAlarm = fNameAlarm.toLocal8Bit();
|
||||
char* fNameAlarm_c = qbyAlarm.data();
|
||||
uniqueInstance->streamAlarm = fopen(fNameAlarm_c, "wt");
|
||||
}
|
||||
}
|
||||
return uniqueInstance;
|
||||
}
|
||||
|
||||
|
||||
void DeviceInfo::deleteInstance() {
|
||||
if (uniqueInstance) {
|
||||
delete uniqueInstance;
|
||||
}
|
||||
}
|
||||
|
||||
DeviceInfo::DeviceInfo()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 实现把文本字符串写入文件,并且文本字符可以带多个格式参数
|
||||
* 写信息日志
|
||||
*/
|
||||
void DeviceInfo::printInfo(const char* format ...) {
|
||||
if(uniqueInstance->streamInfo == nullptr)
|
||||
{
|
||||
throw MyException(QString("写入日志失败!异常代码为:%1").arg(WRITE_LOG_FAIL),WRITE_LOG_FAIL);
|
||||
}
|
||||
// 定义可变参数指针
|
||||
va_list ap;
|
||||
// 初始化可变参数指针,指向第一个可变参数
|
||||
va_start(ap, format);
|
||||
// 使用参数列表发送格式化输出到流 streamInfo 中
|
||||
// 参数1:这是指向 FILE 对象的指针,该 FILE 对象标识了流
|
||||
// 参数2:这是 C 字符串,包含了要被写入到流 streamInfo 中的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化。
|
||||
// 参数3:可变参数指针
|
||||
vfprintf(streamInfo, format, ap);
|
||||
fprintf(streamInfo, "\n");
|
||||
va_end(ap);
|
||||
fflush(streamInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 实现把文本字符串写入文件,并且文本字符可以带多个格式参数
|
||||
* 写报警日志
|
||||
*/
|
||||
void DeviceInfo::printAlarm(const char* format ...) {
|
||||
// 定义可变参数指针
|
||||
va_list ap;
|
||||
// 初始化可变参数指针,指向第一个可变参数
|
||||
va_start(ap, format);
|
||||
// 使用参数列表发送格式化输出到流 streamInfo 中
|
||||
// 参数1:这是指向 FILE 对象的指针,该 FILE 对象标识了流
|
||||
// 参数2:这是 C 字符串,包含了要被写入到流 streamInfo 中的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化。
|
||||
// 参数3:可变参数指针
|
||||
vfprintf(streamAlarm, format, ap);
|
||||
fprintf(streamAlarm, "\n");
|
||||
va_end(ap);
|
||||
fflush(streamAlarm);
|
||||
}
|
||||
|
||||
void DeviceInfo::printDeviceSystemInfo(const QString text,SYS_INFO_LEVEL level)
|
||||
{
|
||||
QDateTime now = QDateTime::currentDateTime();
|
||||
QString nowStr;
|
||||
|
||||
nowStr = now.toString("yyyyMMdd_hh:mm:ss:zzz ");
|
||||
nowStr+=text;
|
||||
emit deviceSystemInfoSGL(nowStr,level);
|
||||
//记录日志
|
||||
QByteArray qbyInfo = nowStr.toLocal8Bit();
|
||||
char* info_c = qbyInfo.data();
|
||||
printInfo(info_c);
|
||||
}
|
||||
void DeviceInfo::printDeviceSalamInfo(const QString text,SYS_INFO_LEVEL level)
|
||||
{
|
||||
QDateTime now = QDateTime::currentDateTime();
|
||||
QString nowStr;
|
||||
|
||||
nowStr = now.toString("yyyyMMdd_hh:mm:ss:zzz ");
|
||||
nowStr += text;
|
||||
emit deviceSalamInfoSGL(nowStr,level);
|
||||
emit deviceSystemInfoSGL(nowStr,level);
|
||||
|
||||
//记录日志
|
||||
QByteArray qbyInfo = nowStr.toLocal8Bit();
|
||||
char* info_c = qbyInfo.data();
|
||||
printInfo(info_c);
|
||||
printAlarm(info_c);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user