源码引用log4Qt
参考网站: https://developer.aliyun.com/article/804837
1. 下载最新的源码1.5.1:https://github.com/MEONMedical/Log4Qt
下载下来解压后只需要留下:
a. build.pri
b. g++.pri
c. src 目录
2. 在自己的工程pro文件中引用log4qt子工程
#################日志库的引入######################## ##https://github.com/MEONMedical/Log4Qt include($$PWD/Log4Qt-1.5.1/src/log4qt/log4qt.pri) include($$PWD/Log4Qt-1.5.1/build.pri) include($$PWD/Log4Qt-1.5.1/g++.pri) QT += concurrent DEFINES += LOG4QT_LIBRARY DEFINES += LOG4QT_EXPORT INCLUDEPATH += Log4Qt-1.5.1/src/ INCLUDEPATH += Log4Qt-1.5.1/src/log4qt DEPENDPATH += Log4Qt-1.5.1/src/log4qt ###################################################
3. 修改一处编译错误Log4Qt-1.5.1/src/log4qt/dailyfileappender.cpp 添加头文件引用
#include <QStringBuilder>
4. 代码配置控制台日志输出:
#include "mainwindow.h" #include <QApplication> #include <QStandardPaths> #include <QDir> #include "logmanager.h" #include "propertyconfigurator.h" #include <consoleappender.h> #include <dailyrollingfileappender.h> #include <ttcclayout.h> #include <patternlayout.h> #include <QDebug> #include <QTextCodec> int main(int argc, char *argv[]) { QApplication a(argc, argv); Log4Qt::PropertyConfigurator::configure("log.conf"); Log4Qt::LogManager::setHandleQtMessages(true); Log4Qt::Logger *logger = Log4Qt::Logger::rootLogger(); Log4Qt::PatternLayout *layout = new Log4Qt::PatternLayout(); layout->setName("PatternLayout"); layout->setConversionPattern("%d{yyyy-MM-dd HH:mm:ss.zzz} [%p] %m%n"); layout->activateOptions(); // show log at the output window Log4Qt::ConsoleAppender *appender = new Log4Qt::ConsoleAppender(); appender->setName("ConsoleAppender"); appender->setLayout(layout); appender->setEncoding(QTextCodec::codecForName("UTF-8")); appender->setTarget(Log4Qt::ConsoleAppender::STDOUT_TARGET); // write log to stdout appender->setImmediateFlush(true); appender->setThreshold(Log4Qt::Level::ALL_INT); // output all log appender->activateOptions(); // add appender logger->addAppender(appender); logger->setLevel(Log4Qt::Level::ALL_INT); qDebug() << ("new log"); qInfo() << ("new log"); qWarning() << ("new log"); qCritical() << ("new log"); MainWindow w; w.show(); int ret = a.exec(); return ret; }
5. 配置文件log.conf配置日志输出到文件:
log4j.rootLogger=ALL, daily log4j.appender.daily=org.apache.log4j.DailyRollingFileAppender log4j.appender.daily.file=app.log log4j.appender.daily.appendFile=true log4j.appender.daily.datePattern=yyyy-MM-dd.log log4j.appender.daily.layout=org.apache.log4j.PatternLayout log4j.appender.daily.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.zzz} %p:%m%n
6. 在工程文件pro里添加将log.conf拷贝到输出目录
DISTFILES += \ log.conf logconf.commands = $(COPY_DIR) \"$$replace(PWD, /, \\)\log.conf\" \"$$replace(OUT_PWD, /, \\)\" first.depends += $(first) logconf export(first.depends) export(logconf.commands) QMAKE_EXTRA_TARGETS += first logconf
到此结束。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理