Qt日志工具--QsLog

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Qt日志工具--QsLog

简述


QsLog是一个轻量级的开源qt日志,可以输出qt自己的类型,有输出级别控制,并且可以运行时调整级别。


另外也是线程安全的,支持多线程。使用起来也很方便。


使用介绍


引入日志模块


如果要加入到你现有的qt项目里,只需在代码的项目文件(pro)里加入如下代码几个引入日志模块:

#引入日志模块,路径要修改为实际的路径
include(./QsLog/QsLog.pri)


代码


包含头文件,声明命名空间

#include "../QsLog/QsLog.h"
using namespace QsLogging;


日志初始化代码:

#define LOG_FILE_PATH "log/"  //日志路径

void initLog()
{
    // 初始化日志机制
    Logger& logger = Logger::instance();
    logger.setLoggingLevel(QsLogging::TraceLevel);  //指定日志级别

    // 添加文件为目的地
    const QString sLogPath(LOG_FILE_PATH+QString("app.log"));
    DestinationPtr fileDestination(DestinationFactory::MakeFileDestination(
      sLogPath, EnableLogRotation, MaxSizeBytes(10*1024), MaxOldLogCount(3)));
    logger.addDestination(fileDestination);

    DestinationPtr debugDestination(DestinationFactory::MakeDebugOutputDestination());
    logger.addDestination(debugDestination);

    // 打印日志
    QLOG_FATAL() << "app start."<<sLogPath;
}

//在主程序启动时,初始化;
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    initLog();

    Widget w;



    w.show();

    return a.exec();
}


测试代码:

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    QTimer *pTimer = new QTimer;
    pTimer->setInterval(500);
    connect(pTimer, &QTimer::timeout, this, [this](){

        QLOG_FATAL() << "fatal msg.";
        QLOG_ERROR() << "error msg.";
        QLOG_WARN()  << "warn  msg.";
        QLOG_INFO()  << "info  msg.";
        QLOG_DEBUG() << "debug msg.";
        QLOG_TRACE() << "trace msg.";


    });
    pTimer->start();
}

Widget::~Widget()
{
    delete ui;
}


日志输出


日志输出到了指定的目录下面,会循环覆盖:

2000-01-01 10:14:14.641 [INFO ]: operator() [ 19 ]: info  msg. 
2000-01-01 10:14:14.641 [DEBUG]: operator() [ 20 ]: debug msg. 
2000-01-01 10:14:14.641 [TRACE]: operator() [ 21 ]: trace msg. 
2000-01-01 10:14:15.132 [FATAL]: operator() [ 16 ]: fatal msg. 
2000-01-01 10:14:15.132 [ERROR]: operator() [ 17 ]: error msg. 
2000-01-01 10:14:15.132 [WARN ]: operator() [ 18 ]: warn  msg. 
2000-01-01 10:14:15.132 [INFO ]: operator() [ 19 ]: info  msg. 
2000-01-01 10:14:15.132 [DEBUG]: operator() [ 20 ]: debug msg. 
2000-01-01 10:14:15.132 [TRACE]: operator() [ 21 ]: trace msg. 


完整代码


完整测试代码已上传码云:

https://gitee.com/fensnote/demo_code

相关实践学习
日志服务之数据清洗与入湖
本教程介绍如何使用日志服务接入NGINX模拟数据,通过数据加工对数据进行清洗并归档至OSS中进行存储。
目录
相关文章
|
2月前
|
Linux 应用服务中间件 PHP
性能工具之linux常见日志统计分析命令
通过本文的介绍,我相信同学们一定会发现 linux三剑客强大之处。在命令行中,它还能够接受,和执行外部的 AWK 程序文件,可以对文本信息进行非常复杂的处理,可以说“只有想不到的,没有它做不到的。
90 1
|
2月前
|
编译器 vr&ar C语言
高效c/c++日志工具zlog使用介绍
高效c/c++日志工具zlog使用介绍
229 2
|
24天前
|
机器学习/深度学习 数据可视化
【tensorboard】深度学习的日志信息events.out.tfevents文件可视化工具
【tensorboard】深度学习的日志信息events.out.tfevents文件可视化工具
|
2天前
|
应用服务中间件 开发工具 nginx
Ngnix09目录结构分析,使用tree工具可以Ngnix目录中以一个树的方式呈现出来,yum install -y tree,tail -f nginx/logs/access.log
Ngnix09目录结构分析,使用tree工具可以Ngnix目录中以一个树的方式呈现出来,yum install -y tree,tail -f nginx/logs/access.log
|
29天前
|
SQL Oracle 关系型数据库
探索 Linux 命令 `db_archive`:Oracle 数据库归档日志的工具
探索 Linux 中的 `db_archive`,实际与 Oracle 数据库归档日志管理相关。在 Oracle 中,归档日志用于恢复,当在线重做日志满时自动归档。管理员可使用 SQL*Plus 查看归档模式,通过 `RMAN` 进行备份和恢复操作。管理归档日志需谨慎,避免数据丢失。了解归档管理对 Oracle 管理员至关重要,确保故障时能快速恢复数据库。
|
29天前
|
存储 关系型数据库 Linux
探索 `db_printlog`:Linux 下的数据库日志打印工具
`db_printlog`是Linux下用于解析和打印Berkeley DB日志文件的命令行工具,帮助用户以可读格式理解数据库事务和系统事件。要使用它,先安装Berkeley DB,然后通过`db_printlog logfilename`命令分析日志。常见选项包括`-h`(显示帮助)、`-v`(详细输出)和`-f`(跟随日志更新)。注意日志文件权限和大小问题,此工具适用于Berkeley DB,其他数据库系统可能有不同解析工具。
|
1月前
|
SQL 监控 关系型数据库
解密MySQL二进制日志:深度探究mysqlbinlog工具
解密MySQL二进制日志:深度探究mysqlbinlog工具
51 3
|
2月前
|
存储 监控 Ubuntu
Linux系统之GoAccess实时Web日志分析工具的基本使用
【5月更文挑战第22天】Linux系统之GoAccess实时Web日志分析工具的基本使用
56 1
|
1月前
logrotate 日志文件管理工具介绍和经典案例
logrotate 日志文件管理工具介绍和经典案例
34 0
|
2月前
|
监控 Linux 开发者
【专栏】`head`命令是Linux系统中用于快速查看文件开头内容的工具,常用于处理日志文件
【4月更文挑战第28天】`head`命令是Linux系统中用于快速查看文件开头内容的工具,常用于处理日志文件。基本用法包括指定查看行数(如`head -n 10 file.txt`)和与其他命令(如`grep`)结合使用。高级用法涉及动态查看日志、过滤内容、管道操作及在脚本中的应用。实际应用案例包括监控系统日志、排查错误和分析应用日志。使用时注意文件存在性、行数选择及权限问题。熟练掌握head命令能提升工作效率,结合其他工具可实现更多功能,助力Linux用户提升技能。

推荐镜像

更多