1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262
|
// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: GPL-3.0-or-later
#ifndef LOGEXPORTTHREAD_H
#define LOGEXPORTTHREAD_H
#include "structdef.h"
#include <QRunnable>
#include <QObject>
#include <QStandardItemModel>
/**
* @brief The LogExportThread class 导出日志线程类
*/
class LogExportThread : public QObject, public QRunnable
{
Q_OBJECT
public:
explicit LogExportThread(QObject *parent = nullptr);
~LogExportThread();
/**
* @brief The RUN_MODE enum 导出类型,用于执行时判断要执行的逻辑
*/
enum RUN_MODE {
HtmlModel, //数据来源是model,导出格式为Html
HtmlJOURNAL, //数据来源是系统日志数据结构体的list,导出格式为Html
HtmlAPP, //数据来源是应用日志数据结构体的list,导出格式为Html
HtmlDPKG, //数据来源是dpkg日志数据结构体的list,导出格式为Html
HtmlBOOT, //数据来源是启动日志数据结构体的list,导出格式为Html
HtmlXORG, //数据来源是xorg日志数据结构体的list,导出格式为Html
HtmlNORMAL, //数据来源是开关机日志数据结构体的list,导出格式为Html
HtmlKWIN, //数据来源是kwin日志数据结构体的list,导出格式为Html
HtmlDNF,
HtmlDMESG,
HtmlAUDIT, //数据来源是audit日志数据结构体的list,导出格式为html
TxtModel, //数据来源是model,导出格式为txt
TxtJOURNAL, //数据来源是系统日志数据结构体的list,导出格式为txt
TxtAPP, //数据来源是应用日志数据结构体的list,导出格式为txt
TxtDPKG, //数据来源是dpkg日志数据结构体的list,导出格式为txt
TxtBOOT, //数据来源是启动日志数据结构体的list,导出格式为txt
TxtXORG, //数据来源是xorg日志数据结构体的list,导出格式为txt
TxtNORMAL, //数据来源是开关机日志数据结构体的list,导出格式为txt
TxtKWIN, //数据来源是kwin日志数据结构体的list,导出格式为txt
TxtDNF,
TxtDMESG,
TxtAUDIT, //数据来源是audit日志数据结构体的list,导出格式为txt
DocModel, //数据来源是model,导出格式为doc
DocJOURNAL, //数据来源是系统日志数据结构体的list,导出格式为doc
DocAPP, //数据来源是应用日志数据结构体的list,导出格式为doc
DocDPKG, //数据来源是dpkg日志数据结构体的list,导出格式为doc
DocBOOT, //数据来源是启动日志数据结构体的list,导出格式为doc
DocXORG, //数据来源是xorg日志数据结构体的list,导出格式为doc
DocNORMAL, //数据来源是开关机日志数据结构体的list,导出格式为doc
DocKWIN, //数据来源是kwin日志数据结构体的list,导出格式为doc
DocDNF,
DocDMESG,
DocAUDIT, //数据来源是audit日志数据结构体的list,导出格式为doc
XlsModel, //数据来源是model,导出格式为xlxs
XlsJOURNAL, //数据来源是系统日志数据结构体的list,导出格式为xlxs
XlsAPP, //数据来源是应用日志数据结构体的list,导出格式为xlxs
XlsDPKG, //数据来源是dpkg日志数据结构体的list,导出格式为xlxs
XlsBOOT, //数据来源是启动日志数据结构体的list,导出格式为xlxs
XlsXORG, //数据来源是xorg日志数据结构体的list,导出格式为xlxs
XlsNORMAL, //数据来源是开关机日志数据结构体的list,导出格式为xlxs
XlsKWIN, //数据来源是kwin日志数据结构体的list,导出格式为xlxs
XlsDNF,
XlsDMESG,
XlsAUDIT, //数据来源是audit日志数据结构体的list,导出格式为xlxs
ZipCoredump,
NoneExportType = 9999 //任何行为
};
void enableAppendExport(bool bEnable = true);
void exportToTxtPublic(const QString &fileName, QStandardItemModel *pModel, LOG_FLAG flag);
void exportToTxtPublic(const QString &fileName, const QList<QString> &jList, const QStringList &labels, LOG_FLAG flag);
void exportToTxtPublic(const QString &fileName, const QList<LOG_MSG_JOURNAL> &jList, const QStringList &labels, LOG_FLAG flag);
void exportToTxtPublic(const QString &fileName, const QList<LOG_MSG_APPLICATOIN> &jList, const QStringList &labels, const QString &iAppName);
void exportToTxtPublic(const QString &fileName, const QList<LOG_MSG_DPKG> &jList, const QStringList &labels);
void exportToTxtPublic(const QString &fileName, const QList<LOG_MSG_BOOT> &jList, const QStringList &labels);
void exportToTxtPublic(const QString &fileName, const QList<LOG_MSG_XORG> &jList, const QStringList &labels);
void exportToTxtPublic(const QString &fileName, const QList<LOG_MSG_NORMAL> &jList, const QStringList &labels);
void exportToTxtPublic(const QString &fileName, const QList<LOG_MSG_KWIN> &jList, const QStringList &labels);
void exportToTxtPublic(const QString &fileName, const QList<LOG_MSG_DNF> &jList, const QStringList &labels);
void exportToTxtPublic(const QString &fileName, const QList<LOG_MSG_DMESG> &jList, const QStringList &labels);
void exportToTxtPublic(const QString &fileName, const QList<LOG_MSG_AUDIT> &jList, const QStringList &labels);
void exportToHtmlPublic(const QString &fileName, QStandardItemModel *pModel, LOG_FLAG flag);
void exportToHtmlPublic(const QString &fileName, const QList<QString> &jList, const QStringList &labels, LOG_FLAG flag);
void exportToHtmlPublic(const QString &fileName, const QList<LOG_MSG_JOURNAL> &jList, const QStringList &labels, LOG_FLAG flag);
void exportToHtmlPublic(const QString &fileName, const QList<LOG_MSG_APPLICATOIN> &jList, const QStringList &labels, const QString &iAppName);
void exportToHtmlPublic(const QString &fileName, const QList<LOG_MSG_DPKG> &jList, const QStringList &labels);
void exportToHtmlPublic(const QString &fileName, const QList<LOG_MSG_BOOT> &jList, const QStringList &labels);
void exportToHtmlPublic(const QString &fileName, const QList<LOG_MSG_XORG> &jList, const QStringList &labels);
void exportToHtmlPublic(const QString &fileName, const QList<LOG_MSG_NORMAL> &jList, const QStringList &labels);
void exportToHtmlPublic(const QString &fileName, const QList<LOG_MSG_KWIN> &jList, const QStringList &labels);
void exportToHtmlPublic(const QString &fileName, const QList<LOG_MSG_DNF> &jList, const QStringList &labels);
void exportToHtmlPublic(const QString &fileName, const QList<LOG_MSG_DMESG> &jList, const QStringList &labels);
void exportToHtmlPublic(const QString &fileName, const QList<LOG_MSG_AUDIT> &jList, const QStringList &labels);
void exportToDocPublic(const QString &fileName, QStandardItemModel *pModel, LOG_FLAG flag);
void exportToDocPublic(const QString &fileName, const QList<QString> &jList, const QStringList &labels, LOG_FLAG iFlag);
void exportToDocPublic(const QString &fileName, const QList<LOG_MSG_JOURNAL> &jList, const QStringList &labels, LOG_FLAG iFlag);
void exportToDocPublic(const QString &fileName, const QList<LOG_MSG_APPLICATOIN> &jList, const QStringList &labels, const QString &iAppName);
void exportToDocPublic(const QString &fileName, const QList<LOG_MSG_DPKG> &jList, const QStringList &labels);
void exportToDocPublic(const QString &fileName, const QList<LOG_MSG_BOOT> &jList, const QStringList &labels);
void exportToDocPublic(const QString &fileName, const QList<LOG_MSG_XORG> &jList, const QStringList &labels);
void exportToDocPublic(const QString &fileName, const QList<LOG_MSG_NORMAL> &jList, const QStringList &labels);
void exportToDocPublic(const QString &fileName, const QList<LOG_MSG_KWIN> &jList, const QStringList &labels);
void exportToDocPublic(const QString &fileName, const QList<LOG_MSG_DNF> &jList, const QStringList &labels);
void exportToDocPublic(const QString &fileName, const QList<LOG_MSG_DMESG> &jList, const QStringList &labels);
void exportToDocPublic(const QString &fileName, const QList<LOG_MSG_AUDIT> &jList, const QStringList &labels);
void exportToXlsPublic(const QString &fileName, QStandardItemModel *pModel, LOG_FLAG flag);
void exportToXlsPublic(const QString &fileName, const QList<QString> &jList, const QStringList &labels, LOG_FLAG iFlag);
void exportToXlsPublic(const QString &fileName, const QList<LOG_MSG_JOURNAL> &jList, const QStringList &labels, LOG_FLAG iFlag);
void exportToXlsPublic(const QString &fileName, const QList<LOG_MSG_APPLICATOIN> &jList, const QStringList &labels, const QString &iAppName);
void exportToXlsPublic(const QString &fileName, const QList<LOG_MSG_DPKG> &jList, const QStringList &labels);
void exportToXlsPublic(const QString &fileName, const QList<LOG_MSG_BOOT> &jList, const QStringList &labels);
void exportToXlsPublic(const QString &fileName, const QList<LOG_MSG_XORG> &jList, const QStringList &labels);
void exportToXlsPublic(const QString &fileName, const QList<LOG_MSG_NORMAL> &jList, const QStringList &labels);
void exportToXlsPublic(const QString &fileName, const QList<LOG_MSG_KWIN> &jList, const QStringList &labels);
void exportToXlsPublic(const QString &fileName, const QList<LOG_MSG_DNF> &jList, const QStringList &labels);
void exportToXlsPublic(const QString &fileName, const QList<LOG_MSG_DMESG> &jList, const QStringList &labels);
void exportToXlsPublic(const QString &fileName, const QList<LOG_MSG_AUDIT> &jList, const QStringList &labels);
void exportToZipPublic(const QString &fileName, const QList<LOG_MSG_COREDUMP> &jList, const QStringList &labels);
bool isProcessing();
public slots:
// 停止线程
void stopImmediately();
public:
//是否可以运行获取逻辑,用来停止线程
bool m_canRunning = false;
protected:
void run() override;
signals:
/**
* @brief sigProgress 导出进度信号
* @param nCur 当前运行到的进度
* @param nTotal 要运行的总数
*/
void sigProgress(int nCur, int nTotal);
/**
* @brief sigResult 导出完成信号
* @param isSuccess 是否成功
*/
void sigResult(bool isSuccess);
void sigProcessFull();
/**
* @brief sigError 导出失败
* @param iError 失败信息
*/
void sigError(QString iError);
private:
bool exportToTxt(const QString &fileName, QStandardItemModel *pModel, LOG_FLAG flag);
bool exportToTxt(const QString &fileName, const QList<QString> &jList, const QStringList &labels, LOG_FLAG flag);
bool exportToTxt(const QString &fileName, const QList<LOG_MSG_JOURNAL> &jList, const QStringList &labels, LOG_FLAG flag);
bool exportToTxt(const QString &fileName, const QList<LOG_MSG_APPLICATOIN> &jList, const QStringList &labels, const QString &iAppName);
bool exportToTxt(const QString &fileName, const QList<LOG_MSG_DPKG> &jList, const QStringList &labels);
bool exportToTxt(const QString &fileName, const QList<LOG_MSG_BOOT> &jList, const QStringList &labels);
bool exportToTxt(const QString &fileName, const QList<LOG_MSG_XORG> &jList, const QStringList &labels);
bool exportToTxt(const QString &fileName, const QList<LOG_MSG_NORMAL> &jList, const QStringList &labels);
bool exportToTxt(const QString &fileName, const QList<LOG_MSG_KWIN> &jList, const QStringList &labels);
bool exportToTxt(const QString &fileName, const QList<LOG_MSG_DNF> &jList, const QStringList &labels);
bool exportToTxt(const QString &fileName, const QList<LOG_MSG_DMESG> &jList, const QStringList &labels);
bool exportToTxt(const QString &fileName, const QList<LOG_MSG_AUDIT> &jList, const QStringList &labels);
bool exportToDoc(const QString &fileName, const QList<QString> &jList, const QStringList &labels, LOG_FLAG iFlag);
bool exportToDoc(const QString &fileName, const QList<LOG_MSG_JOURNAL> &jList, const QStringList &labels, LOG_FLAG iFlag);
bool exportToDoc(const QString &fileName, const QList<LOG_MSG_APPLICATOIN> &jList, const QStringList &labels, QString &iAppName);
bool exportToDoc(const QString &fileName, const QList<LOG_MSG_DPKG> &jList, const QStringList &labels);
bool exportToDoc(const QString &fileName, const QList<LOG_MSG_BOOT> &jList, const QStringList &labels);
bool exportToDoc(const QString &fileName, const QList<LOG_MSG_XORG> &jList, const QStringList &labels);
bool exportToDoc(const QString &fileName, const QList<LOG_MSG_NORMAL> &jList, const QStringList &labels);
bool exportToDoc(const QString &fileName, const QList<LOG_MSG_KWIN> &jList, const QStringList &labels);
bool exportToDoc(const QString &fileName, const QList<LOG_MSG_DNF> &jList, const QStringList &labels);
bool exportToDoc(const QString &fileName, const QList<LOG_MSG_DMESG> &jList, const QStringList &labels);
bool exportToDoc(const QString &fileName, const QList<LOG_MSG_AUDIT> &jList, const QStringList &labels);
bool exportToHtml(const QString &fileName, QStandardItemModel *pModel, LOG_FLAG flag);
bool exportToHtml(const QString &fileName, const QList<QString> &jList, const QStringList &labels, LOG_FLAG flag);
bool exportToHtml(const QString &fileName, const QList<LOG_MSG_JOURNAL> &jList, const QStringList &labels, LOG_FLAG flag);
bool exportToHtml(const QString &fileName, const QList<LOG_MSG_APPLICATOIN> &jList, const QStringList &labels, QString &iAppName);
bool exportToHtml(const QString &fileName, const QList<LOG_MSG_DPKG> &jList, const QStringList &labels);
bool exportToHtml(const QString &fileName, const QList<LOG_MSG_BOOT> &jList, const QStringList &labels);
bool exportToHtml(const QString &fileName, const QList<LOG_MSG_XORG> &jList, const QStringList &labels);
bool exportToHtml(const QString &fileName, const QList<LOG_MSG_NORMAL> &jList, const QStringList &labels);
bool exportToHtml(const QString &fileName, const QList<LOG_MSG_KWIN> &jList, const QStringList &labels);
bool exportToHtml(const QString &fileName, const QList<LOG_MSG_DNF> &jList, const QStringList &labels);
bool exportToHtml(const QString &fileName, const QList<LOG_MSG_DMESG> &jList, const QStringList &labels);
bool exportToHtml(const QString &fileName, const QList<LOG_MSG_AUDIT> &jList, const QStringList &labels);
bool exportToXls(const QString &fileName, const QList<QString> &jList, const QStringList &labels, LOG_FLAG iFlag);
bool exportToXls(const QString &fileName, const QList<LOG_MSG_JOURNAL> &jList, const QStringList &labels, LOG_FLAG iFlag);
bool exportToXls(const QString &fileName, const QList<LOG_MSG_APPLICATOIN> &jList, const QStringList &labels, QString &iAppName);
bool exportToXls(const QString &fileName, const QList<LOG_MSG_DPKG> &jList, const QStringList &labels);
bool exportToXls(const QString &fileName, const QList<LOG_MSG_BOOT> &jList, const QStringList &labels);
bool exportToXls(const QString &fileName, const QList<LOG_MSG_XORG> &jList, const QStringList &labels);
bool exportToXls(const QString &fileName, const QList<LOG_MSG_NORMAL> &jList, const QStringList &labels);
bool exportToXls(const QString &fileName, const QList<LOG_MSG_KWIN> &jList, const QStringList &labels);
bool exportToXls(const QString &fileName, const QList<LOG_MSG_DNF> &jList, const QStringList &labels);
bool exportToXls(const QString &fileName, const QList<LOG_MSG_DMESG> &jList, const QStringList &labels);
bool exportToXls(const QString &fileName, const QList<LOG_MSG_AUDIT> &jList, const QStringList &labels);
bool exportToZip(const QString &fileName, const QList<LOG_MSG_COREDUMP> &jList);
void initMap();
QString strTranslate(const QString &iLevelStr);
/**
* @brief htmlEscapeCovert html转义字符转换
* @param htmlMsg html信息
*/
void htmlEscapeCovert(QString &htmlMsg);
private:
//导出文件路径
QString m_fileName = "";
//model数据源
QStandardItemModel *m_pModel = nullptr;
//导出日志类型
LOG_FLAG m_flag = NONE;
//如果导出项文本标题
QStringList m_labels;
// 通用json格式日志数据
QList<QString> m_logDataList;
//系统日志数据源
QList<LOG_MSG_JOURNAL> m_jList;
//应用日志数据源
QList<LOG_MSG_APPLICATOIN> m_appList;
//dpkg日志数据源
QList<LOG_MSG_DPKG> m_dpkgList;
//启动日志数据源
QList<LOG_MSG_BOOT> m_bootList;
//xorg日志数据源
QList<LOG_MSG_XORG> m_xorgList;
//开关机日志数据源
QList<LOG_MSG_NORMAL> m_normalList;
//kwin日志数据源
QList<LOG_MSG_KWIN> m_kwinList;
QList<LOG_MSG_DNF> m_dnfList;
QList<LOG_MSG_DMESG> m_dmesgList;
QList<LOG_MSG_AUDIT> m_alist;
QList<LOG_MSG_COREDUMP> m_coredumplist;
//当前线程执行的逻辑种类
RUN_MODE m_runMode = NoneExportType;
//打开文件错误描述
QString openErroStr = "export open file error";
//停止导出描述信息
QString stopStr = "stop export";
//应用日志导出的应用名称
QString m_appName = "";
//日志等级-显示文本键值对
QMap<QString, QString> m_levelStrMap;
bool m_appendExport {false};
};
#endif // LOGEXPORTTHREAD_H
|