From 0381c02c34fbe4df51a99dc7099b42bd3088b197 Mon Sep 17 00:00:00 2001 From: datyuesh Date: Wed, 14 Apr 2021 17:28:18 +0800 Subject: [PATCH] Add: log output Signed-off-by: datyuesh --- src/plugins/ukui-clock/main.cpp | 59 +++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/src/plugins/ukui-clock/main.cpp b/src/plugins/ukui-clock/main.cpp index cfcf437f..7a3262c0 100644 --- a/src/plugins/ukui-clock/main.cpp +++ b/src/plugins/ukui-clock/main.cpp @@ -22,9 +22,68 @@ #include #include "xatom-helper.h" +/*! + * \brief myMessageOutput + * 日志打印输出 + */ +void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg) +{ + // 加锁 + static QMutex mutex; + mutex.lock(); + + QByteArray localMsg = msg.toLocal8Bit(); + + QString strMsg(""); + switch (type) { + case QtDebugMsg: + strMsg = QString("Debug "); + break; + case QtWarningMsg: + strMsg = QString("Warning "); + break; + case QtCriticalMsg: + strMsg = QString("Critical "); + break; + case QtFatalMsg: + strMsg = QString("Fatal "); + break; + case QtInfoMsg: + strMsg = QString("Info "); + break; + } + + // 设置输出信息格式 + QString strDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ddd"); + QString strMessage = QString("[DateTime]: %1 [Message]: %2 [Line]: %3 [Function]: %4") + .arg(strDateTime).arg(localMsg.constData()).arg(context.line).arg( + context.function); + + QString dirStr = QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + + "/.config/kylin-clock/"; + QDir dir; + if (!dir.exists(dirStr)) { + dir.mkpath(dirStr); + } + // 输出信息至文件中(读写、追加形式) + QString url_filepath = QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + + "/.config/kylin-clock/output.log"; + QFile file(url_filepath); + + file.open(QIODevice::ReadWrite | QIODevice::Append); + QTextStream stream(&file); + stream << strMsg << strMessage << "\r\n"; + file.flush(); + file.close(); + + // 解锁 + mutex.unlock(); +} int main(int argc, char *argv[]) { + // 自定义消息处理 + qInstallMessageHandler(myMessageOutput); QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);