Log4Qt日志框架 - 日志输出重定向(03)

devtools/2024/9/24 4:27:08/

Log4Qt日志框架 - 日志格式化(02)icon-default.png?t=N7T8https://mp.csdn.net/mp_blog/creation/editor/138417616?spm=1011.2266.3001.6217

一、Log4Qt输出重定向

Log4Qt继承关系图

  1. AppenderSkeleton:实现一般的功能
  2. DebugAppender:将日志附加到平台调试(Window-stdout或Linux-stdrr)
  3. ListAppender:将日志追加到列表
  4. NullAppender:忽略所有附加请求
  5. WriteAppender:将日志附加到QTextStream
    1. ConsoleAppender:附加到stdout或stdrr
    2. FileAppender:将日志信息附加到文件
    3. DailRollingFileAppender:以指定频率滚动日志文件
    4. RollingFileAppender:以达到指定大小时滚动日志文件

1、输出到控制台

#include "log4qt/logger.h"
#include "log4qt/logmanager.h"
#include "log4qt/fileappender.h"
#include "log4qt/loggerrepository.h"
#include "log4qt/patternlayout.h"
#include "log4qt/consoleappender.h"
#include "log4qt/simplelayout.h"
#include "log4qt/ttcclayout.h"int main(int argc, char *argv[])
{QApplication a(argc, argv);#if 1// 创建一个 TTCCLayout(输出时间、线程、Logger 以及消息内容)Log4Qt::Logger *logger = Log4Qt::Logger::rootLogger();Log4Qt::TTCCLayout *layout = new Log4Qt::TTCCLayout();layout->setName("My Layout");layout->activateOptions();// 创建一个 ConsoleAppender(将日志内容输出到控制台上)Log4Qt::ConsoleAppender *appender = new Log4Qt::ConsoleAppender(layout, Log4Qt::ConsoleAppender::STDOUT_TARGET);appender->setName("My Appender");appender->activateOptions();// 在 logger 上添加 appenderlogger->addAppender(appender);// 设置级别为 DEBUGlogger->setLevel(Log4Qt::Level::DEBUG_INT);// 输出信息logger->debug("Hello, Log4Qt!");// 关闭 loggerlogger->removeAllAppenders();logger->loggerRepository()->shutdown();
#endifreturn a.exec();
}

2、输出到文件

#include "log4qt/logger.h"
#include "log4qt/logmanager.h"
#include "log4qt/fileappender.h"
#include "log4qt/loggerrepository.h"
#include "log4qt/patternlayout.h"
#include "log4qt/consoleappender.h"
#include "log4qt/simplelayout.h"
#include "log4qt/ttcclayout.h"int main(int argc, char *argv[])
{QApplication a(argc, argv);#if 1// 创建一个 TTCCLayout(输出时间、线程、Logger 以及消息内容)Log4Qt::Logger *logger = Log4Qt::Logger::rootLogger();Log4Qt::TTCCLayout *layout = new Log4Qt::TTCCLayout();layout->setName("My Layout");layout->activateOptions();// 创建一个 FileAppender(将日志内容输出到文件中)QString file = QCoreApplication::applicationDirPath() + "/Logs/out.log";Log4Qt::FileAppender *appender = new Log4Qt::FileAppender(layout, file, true);//true:append,false:truncateappender->setName("My Appender");appender->activateOptions();// 在 logger 上添加 appenderlogger->addAppender(appender);// 设置级别为 DEBUGlogger->setLevel(Log4Qt::Level::DEBUG_INT);// 输出信息logger->debug("Hello, Log4Qt!");// 关闭 loggerlogger->removeAllAppenders();logger->loggerRepository()->shutdown();
#endifreturn a.exec();
}

3、以指定频率滚动日志文件

DatePattern参数描述
枚举模式字符串描述
MINUTELY_ROLLOVER"'.'yyyy-MM-dd-hh-mm"每分钟
HOURLY_ROLLOVER"'.'yyyy-MM-dd-hh"每小时
HALFDAILY_ROLLOVER"'.'yyyy-MM-dd-a"每半天
DAILY_ROLLOVER(默认值)"'.'yyyy-MM-dd"每天
WEEKLY_ROLLOVER"'.'yyyy-ww"每周
MONTHLY_ROLLOVER"'.'yyyy-MM"每月

 注:单引号内的内容不会被处理,如:'.'

#include <qdir.h>
#include <qdebug.h>
#include <qthread.h>#include "log4qt/logger.h"
#include "log4qt/logmanager.h"
#include "log4qt/fileappender.h"
#include "log4qt/loggerrepository.h"
#include "log4qt/patternlayout.h"
#include "log4qt/consoleappender.h"
#include "log4qt/simplelayout.h"
#include "log4qt/ttcclayout.h"
#include "log4qt/dailyrollingfileappender.h"int main(int argc, char *argv[])
{QApplication a(argc, argv);#if 1qDebug() << "********** Begin **********";// 使用 rootLogger 打印日志Log4Qt::Logger *logger = Log4Qt::Logger::rootLogger();// 创建一个 TTCCLayout(输出时间、线程、Logger 以及消息内容)Log4Qt::TTCCLayout *layout = new Log4Qt::TTCCLayout();layout->setName("My Layout");layout->activateOptions();// 创建一个 DailyRollingFileAppender(以指定的频率滚动)Log4Qt::DailyRollingFileAppender *appender = new Log4Qt::DailyRollingFileAppender();appender->setName("My Appender");appender->setLayout(layout);appender->setFile(QCoreApplication::applicationDirPath() + "Logs/log.out");appender->setImmediateFlush(true);  // 立即刷新appender->setThreshold(Log4Qt::Level::INFO_INT);  // 设置阈值级别为 INFOappender->setAppendFile(true);  // 追加的方式appender->setDatePattern(Log4Qt::DailyRollingFileAppender::MINUTELY_ROLLOVER); // 日期模式appender->activateOptions();// 在 logger 上添加 appenderlogger->addAppender(appender);// 设置级别为 DEBUGlogger->setLevel(Log4Qt::Level::DEBUG_INT);int count = 0;while (count < 10) {// 输出信息logger->info("Hello, Log4Qt!");QThread::sleep(30);++count;}// 关闭 loggerlogger->removeAllAppenders();logger->loggerRepository()->shutdown();qDebug() << "********** End **********";
#endifreturn a.exec();
}

4、以达到指定大小时滚动文件

#include <qdir.h>
#include <qdebug.h>
#include <qthread.h>#include "log4qt/logger.h"
#include "log4qt/logmanager.h"
#include "log4qt/fileappender.h"
#include "log4qt/loggerrepository.h"
#include "log4qt/patternlayout.h"
#include "log4qt/consoleappender.h"
#include "log4qt/simplelayout.h"
#include "log4qt/ttcclayout.h"
#include "log4qt/dailyrollingfileappender.h"
#include "log4qt/rollingfileappender.h"int main(int argc, char *argv[])
{QApplication a(argc, argv);#if 1qDebug() << "********** Begin **********";// 使用 rootLogger 打印日志Log4Qt::Logger *logger = Log4Qt::Logger::rootLogger();// 创建一个 TTCCLayout(输出时间、线程、Logger 以及消息内容)Log4Qt::TTCCLayout *layout = new Log4Qt::TTCCLayout();layout->setName("My Layout");layout->activateOptions();// 创建一个 RollingFileAppender(滚动多个文件)Log4Qt::RollingFileAppender *appender = new Log4Qt::RollingFileAppender();appender->setName("My Appender");appender->setLayout(layout);appender->setFile(QCoreApplication::applicationDirPath() + "/Logs/log.out");appender->setImmediateFlush(true);  // 立即刷新appender->setThreshold(Log4Qt::Level::INFO_INT);  // 设置阈值级别为 INFOappender->setAppendFile(true);  // 追加的方式// 等价于 appender->setMaximumFileSize(10 * 1024);appender->setMaxFileSize("10KB"); // 在滚动之前设置文件的最大大小appender->setMaxBackupIndex(5);  // 设置备份索引appender->activateOptions();// 在 logger 上添加 appenderlogger->addAppender(appender);// 设置级别为 DEBUGlogger->setLevel(Log4Qt::Level::DEBUG_INT);for (int i = 0; i < 1000; i++){logger->info("write RollingFileAppender info to file");}// 关闭 loggerlogger->removeAllAppenders();logger->loggerRepository()->shutdown();qDebug() << "********** End **********";
#endifreturn a.exec();
}

5、输出到数据库


http://www.ppmy.cn/devtools/31875.html

相关文章

构筑稳固基石:HTML网站架构与结构设计的深度探索

构筑稳固基石&#xff1a;HTML网站架构与结构设计的深度探索 在万维网的广阔天地里&#xff0c;每一个网站都是信息的港湾&#xff0c;而HTML作为这一切的基础&#xff0c;其架构与结构设计直接决定了站点的可访问性、可维护性和扩展性。本文将带你深入HTML的架构世界&#xf…

int类型的取值范围(为什么负数比正数表示的范围多一位)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;C语言基本概念 &#x1f337;追光的人&#xff0c;终会万丈光芒 目录 &#x1f3dd;1.int的基本概念&#xff1a; 空间大小&#xff1a; 有符号类型的表示形式&#xff1a; &#x1f3dd;2.…

如何选择适合的美国站群服务器:经济实惠而可靠的选择

如何选择适合的美国站群服务器&#xff1a;经济实惠而可靠的选择 在今天的数字化时代&#xff0c;选择适合的服务器对于个人网站或企业来说至关重要。一台性能稳定、价格实惠的美国站群服务器能够为您的网站提供所需的支持&#xff0c;但在选择之前&#xff0c;有一些关键因素…

【深度学习基础(1)】什么是深度学习,深度学习与机器学习的区别、深度学习基本原理,深度学习的进展和未来

文章目录 一. 深度学习概念二. 深度学习与机器学习的区别三. 理解深度学习的工作原理1. 每层的转换进行权重参数化2. 怎么衡量神经网络的质量3. 怎么减小损失值 四. 深度学习已取得的进展五. 人工智能的未来 - 不要太过焦虑跟不上 一. 深度学习概念 先放一张图来理解下人工智能…

【LAMMPS学习】八、基础知识(5.6)绝热核/壳模型

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

ruoyi漏洞总结

若依识别 黑若依 :icon hash"-1231872293 绿若依 :icon hash"706913071” body" 请通过前端地址访 " body" 认证失败&#xff0c;无法访问系统资源 " 如果页面访问显示不正常&#xff0c;可添加默认访问路径尝试是否显示正常 /login?redi…

linux jmeter ant下载并安装【2024-亲测】

环境 centos7 一、下载jmeter 在这里插入代码片wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.3.tgz --no-check-certificate解压 tar -zxvf apache-jmeter-5.6.3.tgz复制到安装目录、设置环境变量 vim /etc/profile添加环境变量&#xff0c;路径改成…

Hdfs小文件治理策略以及治理经验

小文件是 Hadoop 集群运维中的常见挑战&#xff0c;尤其对于大规模运行的集群来说可谓至关重要。如果处理不好&#xff0c;可能会导致许多并发症。Hadoop集群本质是为了TB,PB规模的数据存储和计算因运而生的。为啥大数据开发都说小文件的治理重要&#xff0c;说HDFS 存储小文件…