大良营销网站建设资讯,wordpress cdn 阿里,模板网站建设教程,建立门户网站的步骤一、知识点 1、Log4Qt有三部分 logger#xff1a;负责捕获日志信息 layout#xff1a;负责使用不同的样式输出日志 appender#xff1a;负责输出信息到不同的目的地#xff0c;比如数据库、文件、控制台等等 2、 日志级别如下#xff0c;从上往下依次递增 ALL#xff1a;… 一、知识点 1、Log4Qt有三部分 logger负责捕获日志信息 layout负责使用不同的样式输出日志 appender负责输出信息到不同的目的地比如数据库、文件、控制台等等 2、 日志级别如下从上往下依次递增 ALL所有日志的级别都包括 TRACE指定比DEBUG更粗粒度的调试日志 DEBUG指定的信息事件的粒度是DEBUG在调试应用的时候会有帮助 INFO指定信息消息强调应用粗粒度的运行情况 WARN输出具有潜在风险的 ERROR指定错误事件并且这些事件还会保证应用继续运行 FATAL指定严重的错误事件该事件导致应用暂停 OFF最高级别相当于关闭日志 3、 日志消息格式 通过转换说明符来表示以百分号%开始后跟转换字符。 如下实例 layout-setConversionPattern(%d{yyyy-MM-dd hh:mm:ss} %p %c %m %r %t %F %M %L %l %n); %d: 输出日志时间点的日期或时间比如%d{yyyy-MM-dd hh:mm:ss}输出2023-10-26 13:37:29%p: 输出日志级别即DEBUGINFOWARNERRORFATAL,%c输出Logger 名称%m: 输出代码中指定的消息%r: 输出自应用启动到输出该日志信息耗费的毫秒数%t: 输出线程信息当用QThread::currentThread()-setObjectName(XXX);设置线程名之后输出的时线程名“XXX”QThread::currentThread()-objectName()没设置线程名输出的是线程地址0x000000000xxxxxxxxxxQThread::currentThread()%F: 输出日志消息产生时所在的文件名称%M输出日志消息产生时所在的函数名称%L: 输出日志消息产生时所在代码中的行号%l: 输出日志消息产生时所在位置相当于%F:%L-%M的组合%n: 输出一个回车换行符Windows平台为\r\nUnix平台为\n 二、下载 访问下面的网址下载Log4Qt源码压缩包 https://github.com/MEONMedical/Log4Qt 三、链接库方式使用 下载的压缩包解压之后如下图所示用Qt打开log4qt.pro 选择编译器 右击项目名进行重新构建 在构建目录中生成log4qt.dll 新建一个Qt项目 在新建的项目中新建一个“bin”文件夹把刚才生成的log4qt.dll拷贝进去 在新建的项目中新建一个“include/log4qt”文件夹把下载文件夹中的Log4Qt-master\src\log4qt中的三个文件夹和.h文件拷贝过去 在Log4QtDll.pro文件中增加如下代码 DESTDIR $$PWD/bin
INCLUDEPATH $$PWD/include
LIBS -L$$PWD/bin -llog4qt 更改main.cpp中的代码 #include mainwindow.h
#include QApplication
#include log4qt/logger.h
#include log4qt/logmanager.h
#include log4qt/patternlayout.h
#include log4qt/consoleappender.h
#include log4qt/dailyfileappender.hint main(int argc, char *argv[])
{QApplication a(argc, argv);//Logger记录器有一个根Logger可以有多个其他LoggerLog4Qt::Logger *logger Log4Qt::Logger::rootLogger(); //根Loggername为root//Log4Qt::Logger *mylog1 Log4Qt::Logger::logger(Mylog1); //其他Loggername为Mylog1的logger-setLevel(Log4Qt::Level::DEBUG_INT); //设置日志输出级别Log4Qt::LogManager::setHandleQtMessages(true); //处理qt调试输出信息将qDebug之类的信息重定向不开启这个qDebug()、qWri/****************PatternLayout配置日志的输出格式****************************/Log4Qt::PatternLayout *layout new Log4Qt::PatternLayout();layout-setConversionPattern(%d{yyyy-MM-dd hh:mm:ss} %p %c %m %r %t %F %M %L %l %n);layout-activateOptions(); // 激活Layout/***************************配置日志的输出位置***********///ConsoleAppender输出到控制台Log4Qt::ConsoleAppender *appender new Log4Qt::ConsoleAppender(layout, Log4Qt::ConsoleAppender::STDOUT_TARGET);appender-activateOptions();logger-addAppender(appender);//DailyFileAppender每天新建一个文件保存当天的日志超过指定的天数删除最开始的日志Log4Qt::DailyFileAppender *dailiAppender new Log4Qt::DailyFileAppender;dailiAppender-setLayout(layout); //设置输出格式dailiAppender-setFile(logFile.log); //日志文件名固定前缀dailiAppender-setDatePattern(_yyyy_MM_dd); //日志文件名根据每天日志变化的后缀dailiAppender-setAppendFile(true); //true表示消息增加到指定文件中false则将消息覆盖指定的文件内容默认值是falsedailiAppender-setKeepDays(30); //设置保留天数dailiAppender-activateOptions();logger-addAppender(dailiAppender);// 关闭 logger
// logger-removeAllAppenders();
// logger-loggerRepository()-shutdown();MainWindow w;w.show();return a.exec();
}更mainwindow.cpp中的代码 #include mainwindow.h
#include ui_mainwindow.h
#include QDebugMainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui-setupUi(this);qDebug() mainwindow debug;qCritical() mainwindow critical;
}MainWindow::~MainWindow()
{delete ui;
}重新构建并运行输出如下 在项目目录的bin文件夹下生成日志文件 mian.cpp中的代码是设置日志输出格式 layout-setConversionPattern(%d{yyyy-MM-dd hh:mm:ss} %p %c %m %r %t %F %M %L %l %n); 输出的对应内容如下 %d{yyyy-MM-dd hh:mm:ss}2023-10-27 10:31:19 %pDEBUG %cQt default %mmainwindow debug %r1454 %t0x000000000d816d00 %F..\Log4QtDll\mainwindow.cpp %MMainWindow::MainWindow(QWidget*) %L11 %l..\Log4QtDll\mainwindow.cpp:11 - MainWindow::MainWindow(QWidget*)%n换行 四、源码方式使用 新建一个Qt项目 把下载解压的文件夹中的如下文件夹拷贝到新建项目中 再把如下两个文件拷贝到新建项目的log4qt文件夹中 在Log4QtSrc.pro文件中添加如下代码 INCLUDEPATH $$PWD/log4qt
include($$PWD/log4qt/log4qt.pri) 重新构建 项目结构中出现如下内容报错先不用管 在log4qt.pri文件中添加如下代码 QT xml network concurrent sqlDEFINES LOG4QT_STATIC
include($$PWD/build.pri)
include($$PWD/g.pri) 再重新构建 更改main.cpp代码 #include mainwindow.h
#include QApplication
#include log4qt/logger.h
#include log4qt/logmanager.h
#include log4qt/patternlayout.h
#include log4qt/consoleappender.h
#include log4qt/dailyfileappender.hint main(int argc, char *argv[])
{QApplication a(argc, argv);//Logger记录器有一个根Logger可以有多个其他LoggerLog4Qt::Logger *logger Log4Qt::Logger::rootLogger(); //根Loggername为root//Log4Qt::Logger *mylog1 Log4Qt::Logger::logger(Mylog1); //其他Loggername为Mylog1的logger-setLevel(Log4Qt::Level::DEBUG_INT); //设置日志输出级别Log4Qt::LogManager::setHandleQtMessages(true); //处理qt调试输出信息将qDebug之类的信息重定向不开启这个qDebug()、qWri/****************PatternLayout配置日志的输出格式****************************/Log4Qt::PatternLayout *layout new Log4Qt::PatternLayout();layout-setConversionPattern(%d{yyyy-MM-dd hh:mm:ss} %p %c %m %r %t %F %M %L %l %n);layout-activateOptions(); // 激活Layout/***************************配置日志的输出位置***********///ConsoleAppender输出到控制台Log4Qt::ConsoleAppender *appender new Log4Qt::ConsoleAppender(layout, Log4Qt::ConsoleAppender::STDOUT_TARGET);appender-activateOptions();logger-addAppender(appender);//DailyFileAppender每天新建一个文件保存当天的日志超过指定的天数删除最开始的日志Log4Qt::DailyFileAppender *dailiAppender new Log4Qt::DailyFileAppender;dailiAppender-setLayout(layout); //设置输出格式dailiAppender-setFile(logFile.log); //日志文件名固定前缀dailiAppender-setDatePattern(_yyyy_MM_dd); //日志文件名根据每天日志变化的后缀dailiAppender-setAppendFile(true); //true表示消息增加到指定文件中false则将消息覆盖指定的文件内容默认值是falsedailiAppender-setKeepDays(30); //设置保留天数dailiAppender-activateOptions();logger-addAppender(dailiAppender);// 关闭 logger
// logger-removeAllAppenders();
// logger-loggerRepository()-shutdown();MainWindow w;w.show();return a.exec();
}更改mainwindow.cpp的代码 #include mainwindow.h
#include ui_mainwindow.h
#include QDebugMainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui-setupUi(this);qDebug() mainwindow debug;qCritical() mainwindow critical;
}MainWindow::~MainWindow()
{delete ui;
}重新构建并运行输出如下 同时在项目构建目录下生成日志文件