QT C++ 显示不同颜色标志日志信息和保存日志信息本地(.txt)

本文介绍了日志信息在软件开发中的重要性,包括系统日志、应用程序日志和安全日志的种类,以及如何通过C++代码实现日志保存在本地并配合应用程序级别显示,使用Qt库进行操作和颜色标记。
摘要由CSDN通过智能技术生成

1.日志信息的作用

   通过日志信息,可以对系统进行实时记录,快速定位问题的根源。记录程序运行的行为和系统操作,程序员必备技能。

2.日志信息范围

   可以是 系统日志,系统日志通常记录操作系统的运行信息,包括启动和关闭时间、系统错误、硬件故障 。应用程序日志,应用程序日志记录应用程序的运行信息,包括用户交互、错误消息。安全日志,安全日志记录与安全相关的事件,如用户登录、访问控制、入侵检测。

 3.项目结构

4.日志保存在本地代码

.h文件

#pragma once
#include <QObject>
#include<QTextStream>
#include <QDateTime>
#include <QFile>
#include <QDir>
class logMessage  : public QObject
{
	Q_OBJECT

public:


protected:
	explicit logMessage(QObject* parent = nullptr);


private:

public:
	static logMessage* instance();

	~logMessage();

	int savelogMessage(QString savePath, const QString& message) const;
};

.cpp文件

#include "logMessage.h"


logMessage::logMessage(QObject *parent)
	: QObject(parent)
{}

logMessage* logMessage::instance()
{

	static logMessage ins;

	return &ins;

}

logMessage::~logMessage()
{}

int logMessage::savelogMessage(QString savePath, const QString & message) const
{

	QDir dir(savePath);

	//判断保存路径是否存在
	if (!dir.exists()) {


		QDir().mkpath(savePath);
	}
	
	// 获取当前时间
	QDateTime currentTime = QDateTime::currentDateTime();

	// 构造日志信息
	QString logEntry = currentTime.toString("[yyyy-MM-dd hh:mm:ss] ") + message;

	// 打开或创建日志文件
	QString saveName = savePath + "/" + currentTime.toString("yyyy_MM_dd") + ".txt";

	QFile logFile(saveName);

	if (logFile.open(QIODevice::Append | QIODevice::Text)) {
		QTextStream textStream(&logFile);

		// 写入日志信息
		textStream << logEntry << "\n";

		// 关闭文件
		logFile.close();
	}
	return 0;
}

 保存log信息到本地.txt文件

5.应用程序显示日志代码

1.在实现类创建枚举 你可以自己定义 自己的枚举类型


class testRelease : public QWidget
{
    Q_OBJECT

public:
      testRelease(QWidget *parent = nullptr);
  
      ~testRelease();



    enum MesState {
        Normal = 0,
        Warning,
        Critical
    };
    //显示日志接口
    void printLog(QString mes, MesState state);
}

2.创建ui

3.打印日志接口的实现



void testRelease::printLog(QString mes, MesState state)
{
    // 创建日志时间
    QDateTime currentTime = QDateTime::currentDateTime();
    //创建日志记录
    QString logEntry = currentTime.toString("[yyyy-MM-dd hh:mm:ss] ") + mes;
    QTextCharFormat fmt;

    //定义字体大小
    fmt.setFontPointSize(12);
    //定义字体样式
    fmt.setFontFamily("Microsoft YaHei");
    //根据 state 状态配置颜色
    QColor color(0, 0, 0); 
    if (Normal == state) {
        color.setRgb(50, 205, 50);//正常的
    }
    else if (Warning == state){
        color.setRgb(255, 200, 0); //警告的
    }
    else if (Critical == state) {
        color.setRgb(255, 0, 0);  //危险的
    }
    //设置字体样式
    fmt.setForeground(color);
    ui.textEdit->setCurrentCharFormat(fmt);
    //显示日志
    ui.textEdit->append(logEntry);

    //保存到本地
    logMessage::instance()->savelogMessage("e:/log", mes);

}

4.这里构造函数,接口使用方式

#include "testRelease.h"
#include <QDebug>
#include <QDateTime>
#include "logMessage.h"


testRelease::testRelease(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);

    QTime time;
    time.start();
    printLog(u8"正常的信息(设备正常运行)", Normal);
    qDebug() << u8"保存一条log信息花费时间为" << time.elapsed() << "ms";
    printLog(u8"警告的信息(设备已停止)", Warning);
    printLog(u8"危险的信息(设备异常)", Critical);

}

6.实现效果

应用程序显示log信息,安装等级颜色划分,显示日志信息时,同时保存到了本地。

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值