前言:
開發平臺:Win10 64位
開發環境:Qt Creator 13.0.0
構建環境:Qt 5.15.2 +MSVC2019 64位
例如:上一篇文章中筆者記錄了Log4qt的編譯及配置使用,這篇文章重點寫下每天產生文件到指定文件夾中,形成模板,方便日后直接使用。
文章目錄
- 一、準備工作
- 二、配置文件編寫
- 2.1 不使用logConversionPattern
- 2.2 使用logConversionPattern
- 三、main中使用
- 四、參考文獻
- 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
一、準備工作
準備好log4qt的鏈接庫及頭文件,并將其復制到創建的工程的指定目錄中,如有不清楚的地方可以看下筆者上一篇文章https://blog.csdn.net/roujian0985/article/details/138698735。
二、配置文件編寫
2.1 不使用logConversionPattern
其實用不用logConversionPattern就是個輸出布局格式的問題,logConversionPattern具體使用看下參考文獻4.2,筆者就不多贅述了。
#設置儲存log文件的根目錄,生成的日志文件會存在Logs文件夾中
logpath=./Logslog4j.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
#設置儲存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 %nlog4j.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中。
#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();
}