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

相关推荐
用户805533698032 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner2 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz7 天前
QML Hello World 入门示例
qt
xcyxiner10 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner11 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner11 天前
DicomViewer (添加模型类)3
qt
xcyxiner12 天前
DicomViewer (目录调整) 2
qt
xcyxiner12 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
桥田智能14 天前
桥田智能 QT-650S:面向白车身焊装的 800kg 重载快换解决方案
开发语言·qt·系统架构
森G14 天前
75、服务器源码解析---------云视频服务项目
linux·服务器·网络·c++·qt