8、Qt—Log4Qt使用小记2(每日产生文件)

前言:

开发平台:Win10 64位

开发环境:Qt Creator 13.0.0

构建环境:Qt 5.15.2 +MSVC2019 64位

例如:上一篇文章中笔者记录了Log4qt的编译及配置使用,这篇文章重点写下每天产生文件到指定文件夹中,形成模板,方便日后直接使用。


文章目录


一、准备工作

准备好log4qt的链接库及头文件,并将其复制到创建的工程的指定目录中,如有不清楚的地方可以看下笔者上一篇文章https://blog.csdn.net/roujian0985/article/details/138698735。

二、配置文件编写

2.1 不使用logConversionPattern

其实用不用logConversionPattern就是个输出布局格式的问题,logConversionPattern具体使用看下参考文献4.2,笔者就不多赘述了。

c 复制代码
#设置储存log文件的根目录,生成的日志文件会存在Logs文件夹中
logpath=./Logs

log4j.reset=true
log4j.Debug=WARN
log4j.threshold=NULL
#设置是否监听QDebug输出的字符串
log4j.handleQtMessages=true
#在运行中,是否监视此文件配置的变化
log4j.watchThisFile=false

#第一个值:设置根Logger的输出log等级为All,即DEBUG之上级别的都被记录
#后面的值:设置输出源,console,daily,如果还想文件滚动输出再加上rolling
log4j.rootLogger=ALL,console,daily

#设置Log输出的几种输出源(appender.console、appender.daily、appender.rolling):上面设置几个输出源下面写几个

#console:设置终端打印记录器,和上面log4j.rootLogger的设置值console呼应
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=STDOUT_TARGET
log4j.appender.console.layout=org.apache.log4j.TTCCLayout
log4j.appender.console.layout.dateFormat=yyyy.MM.dd hh:mm:ss.zzz
log4j.appender.console.layout.contextPrinting=true
log4j.appender.console.threshold=ALL

#daily:设置一个每日储存一个log文件的记录器,和上面log4j.rootLogger的设置值daily呼应
log4j.appender.daily=org.apache.log4j.DailyFileAppender
log4j.appender.daily.file=${logpath}/log4qt.log
log4j.appender.daily.appendFile=true
log4j.appender.daily.datePattern=_yyyy_MM_dd
log4j.appender.daily.keepDays=90
log4j.appender.daily.layout=${log4j.appender.console.layout}
log4j.appender.daily.layout.dateFormat=${log4j.appender.console.layout.dateFormat}
log4j.appender.daily.layout.contextPrinting=${log4j.appender.console.layout.contextPrinting}

2.2 使用logConversionPattern

c 复制代码
#设置储存log文件的根目录,生成的日志文件会存在Logs文件夹中
logpath=./Logs
# 配置日志的输出格式: %r耗费毫秒数 %p日志的优先级 %t线程名 %C所属类名通常为全类名 %L代码中的行号 %x线程相关联的NDC %m日志 %n换行
logConversionPattern=[%d{yyyy-MM-dd HH:mm:ss.zzz}][%-5p][%-2t] >> %m %n

log4j.reset=true
log4j.Debug=WARN 
log4j.threshold=NULL #指定日志消息的输出最低层次
#设置是否监听QDebug输出的字符串
log4j.handleQtMessages=true
#在运行中,是否监视此文件配置的变化
log4j.watchThisFile=false

#第一个值:设置根Logger的输出log等级为All,即DEBUG之上级别的都被记录
#第二个值:设置输出源,console,daily,如果还想文件滚动输出再加上rolling
log4j.rootLogger=ALL,console,daily

#设置Log输出的几种输出源(appender.console、appender.daily、appender.rolling):上面设置几个输出源下面写几个
###############################################################################################
#console:设置终端打印记录器,和上面log4j.rootLogger的设置值console呼应
log4j.appender.console=org.apache.log4j.ConsoleAppender
# 输出
log4j.appender.console.Target = System.out  
# 配置CONSOLE设置为自定义布局模式
log4j.appender.console.layout=org.apache.log4j.PatternLayout
# 配置logfile为自定义布局模式
log4j.appender.console.layout.ConversionPattern=${logConversionPattern}
###############################################################################################

###############################################################################################
#daily:设置一个每日储存一个log文件的记录器,和上面log4j.rootLogger的设置值daily呼应
log4j.appender.daily=org.apache.log4j.DailyFileAppender
log4j.appender.daily.file=${logpath}/log4qt.log
log4j.appender.daily.appendFile=true
log4j.appender.daily.datePattern=_yyyy_MM_dd
log4j.appender.daily.keepDays=90
# 配置logfile为自定义布局模式
log4j.appender.daily.layout=org.apache.log4j.PatternLayout
log4j.appender.daily.layout.ConversionPattern=${logConversionPattern}
###############################################################################################

三、main中使用

在main函数中将配置文件引入,然后正常写debug就可以了,会重定向系统debug(error)等操作到log4qt中。

c 复制代码
#include "mainwindow.h"

#include <QApplication>
#include <log4qt/log4qt.h>
#include <log4qt/propertyconfigurator.h>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    Log4Qt::PropertyConfigurator::configure(a.applicationDirPath() + "/log4qt.ini");

    qDebug()<<"11";

    MainWindow w;
    w.show();
    return a.exec();
}

四、参考文献

4.1 https://blog.csdn.net/qq_43371004/article/details/108162272

4.2 https://blog.csdn.net/Eternity_jie/article/details/107013911

4.3 https://blog.51cto.com/xiaohaiwa/5379141

相关推荐
看到我,请让我去学习4 小时前
Qt编程-qml操作(js,c++,canvas)
开发语言·qt
哈市雪花5 小时前
相机:Camera原理讲解(使用OpenGL+QT开发三维CAD)
qt·3d·交互·相机·图形学·opengl·视角
津津有味道7 小时前
Qt C++串口SerialPort通讯发送指令读写NFC M1卡
linux·c++·qt·串口通信·serial·m1·nfc
feiyangqingyun9 小时前
全网唯一/Qt结合ffmpeg实现手机端采集摄像头推流到rtsp或rtmp/可切换前置后置摄像头/指定分辨率帧率
qt·智能手机·ffmpeg
随意0239 小时前
Qt 事件
开发语言·qt
鸥梨菌Honevid9 小时前
Qt自定义控件(1)——QPaintEvent
开发语言·qt
Mr_Xuhhh1 天前
网络基础(1)
c语言·开发语言·网络·c++·qt·算法
feiyangqingyun1 天前
Qt音视频开发技巧/推流带旋转角度/rtsprtmp推流/保存文件到MP4/拉流解析旋转角度
qt·音视频·qt旋转角度推流
清醒的兰1 天前
Qt 基于TCP套接字编程
网络·qt·tcp
mahuifa11 天前
PySide环境配置及工具使用
python·qt·环境配置·开发经验·pyside