You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/Include/iBase/iLogs/zxLogInstance.h

94 lines
2.4 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#pragma once
#include <QObject>
#include <QTextEdit>
#include "Defines.h"
#include "iLogs_global.h"
// 日志单例
// 202609020 改为QObject 以支持跨线程写入
class I_LOGSSHARED_EXPORT zxLogInstance : public QObject
{
Q_OBJECT
public:
// 获取对象,单例模式
static zxLogInstance* getInstance();
// 关闭消耗
static void release();
// 设置
/*static */void setLogEdit(QTextEdit* pTextEdit);
// 写日志,分别对应 Debug Information Fatal Warning
void writeLogD(QString sLog);
void writeLogI(QString sLog);
void writeLogF(QString sLog);
void writeLogW(QString sLog);
void writeLog(const QString& msg);
void openLog(); //打开日志
void preSaveLog(); //当大于16M时,备份文件
void saveLog(); //保存日志
// 该函数返回的结果并不是exe程序的名称,而是
// 在exe中设置的名称如:a.setApplicationName("WTAI");
// 其实也是ini中配置的AppID
// 比如 iWTAINavi.exe 程序,返回的 可能是WTAI
QString getAppID();
// 该函数返回的结果是ini中配置的AppDescCN,如现代试井解释软件
QString getAppDescCN();
// 该函数返回的结果是ini中配置的AppDescEN,如CNPC-TEST
QString getAppDescEN();
signals:
///////////////////////////////////////////////////////
// 由工作线程 emit,交由 MainWindow 主线程执行
// 参数只用基础类型,确保跨线程安全
// 追加日志内容
void sigAppendLog(const QString& msg, \
const QColor& color);
// 清空日志内容
void sigClearLog();
///////////////////////////////////////////////////////
private slots:
///////////////////////////////////////////////////////
// 以下槽函数在 zxLogInstance 所属线程(MainWindow 主线程)执行,
// 在这里才真正操作 QTextEdit
// 追加日志内容
void onAppendLog(const QString& msg, \
const QColor& color);
// 清空日志内容
void onClearLog();
///////////////////////////////////////////////////////
private:
zxLogInstance();
~zxLogInstance();
private:
static zxLogInstance* m_pLogInstance;
/*static*/ QTextEdit* m_pLogEdit;
// 内部标识(文件+Logo)
QString m_sLogFile;
QString m_sAppDescCN;
QString m_sAppDescEN;
};