log4qt

https://www.it610.com/article/1288451581632651264.htm

 

直接下载这个tag的版本。编译时如果出现错误,共4处,serial的注掉,light改为lighter, dark改为darker。也可能是正常的,没有错误。

https://github.com/MEONMedical/Log4Qt/releases/tag/v1.5.1

 注意:master分支代码并不支持文件名与行号打印。

============================================

qt工程引入 :

include(Log4Qt/src/log4qt/log4qt.pri)

include(Log4Qt/build.pri)

include(Log4Qt/g++.pri)

QT += concurrent

DEFINES += LOG4QT_LIBRARY

DEFINES += LOG4QT_EXPORT

DEFINES += QT_MESSAGELOGCONTEXT

INCLUDEPATH += Log4Qt/src/

INCLUDEPATH += Log4Qt/src/log4qt

DEPENDPATH += Log4Qt/src/log4qt

 

 上面的红色必须要加,否则也会有问题

=============================================

配置文件

log4qt.properties

 

 

#log4j.rootLogger=DEBUG,STDOUT

#log4j.rootLogger=DEBUG,FILE

#log4j.rootLogger=DEBUG,STDOUT,FILE,DAILY

#log4j.rootLogger=DEBUG,FILE,DAILY

#log4j.rootLogger=DEBUG,FILE

#log4j.rootLogger=DEBUG,DAILY

log4j.rootLogger=DEBUG,STDOUT,FILE,DAILY 

 

######################## FILE ################################

log4j.appender.FILE = org.apache.log4j.FileAppender

log4j.appender.FILE.File=file.log

log4j.appender.FILE.layout=org.apache.log4j.PatternLayout

log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] - %m%n 

########################## STDOUT ##################################

log4j.appender.STDOUT = org.apache.log4j.ConsoleAppender

log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout

log4j.appender.STDOUT.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%F:%L] [%p] - %m%n 

########################## DAILY ##################################

log4j.appender.DAILY = org.apache.log4j.DailyRollingFileAppender

log4j.appender.DAILY.File=daily.log

log4j.appender.DAILY.layout=org.apache.log4j.PatternLayout

log4j.appender.DAILY.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] - %m%n

 

测试:

#include <QCoreApplication>

#include "log4qt/logger.h"
#include "log4qt/basicconfigurator.h"
#include "log4qt/propertyconfigurator.h"
#include "log4qt/logmanager.h"
#include "QDebug"
using namespace std;
using namespace Log4Qt;

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

    PropertyConfigurator::configureAndWatch("D:\\qtworkspace\\test_log4qt_for_function\\log4qt.properties");
    LogManager::setHandleQtMessages(true);
    qDebug()<<"radar display begins to boot up ."<<endl;  //只有这种打日志的方式可以输出文件名,函数名与行号
    qDebug("hello world!");
    return a.exec();
}


最后这种能够输出文件名,行号,函数名的原因是他们已经自带国这些信息。
#define qDebug QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).debug
#define qInfo QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).info
#define qWarning QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).warning
#define qCritical QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).critical
#define qFatal QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).fatal
posted @   kissrule  阅读(893)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2019-09-24 ubuntu18.04 rabbitmq安装使用
点击右上角即可分享
微信分享提示