深入浅出(二)log4cplus库

news2024/12/28 21:03:05

log4cplus库

  • 1. log4cplus简介
    • 1.1 log4cplus下载
  • 2. log4cplus配置
  • 3. log4cplus配置文件 *.properties 配置

1. log4cplus简介

log4cplus是C++编写的开源的日志系统。log4cplus具有线程安全、灵活、以及多粒度控制的特点,通过将日志划分优先级使其可以面向程序调试、运行、测试、和维护等全生命周期。可选择将日志输出到屏幕、文件、NT event log、甚至是远程服务器;通过指定策略对日志进行定期备份等等。

1.1 log4cplus下载

  1. 官网地址:https://sourceforge.net/projects/log4cplus/files/log4cplus-stable/
  2. GitHub地址:https://github.com/log4cplus/log4cplus
  3. 官方文档:https://sourceforge.net/p/log4cplus/wiki/Home/

目录结构

  • include
  • msvc14目录自带的测试代码

2. log4cplus配置

1、进入log4cplus-2.0.8/msvc14,用Visual Studio 2019打开文件log4cplus.sln
在这里插入图片描述
2、Visual Studio 2019将编译平台的配置管理器修改为release-x64,重新编译
在这里插入图片描述

3、64位下选择debug和release模式下分别编译,编译成功后在x64/bin.Release和x64/bin.Debug下生成对应的log4cplus.dll和log4cplus.lib。

3. log4cplus配置文件 *.properties 配置

  • log4cplus的日志级别从低到高依次是:TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF
# 设置根日志记录器的级别为 DEBUG,并指定使用名为 STDOUT的输出目标。
# log4cplus.rootLogger=DEBUG, STDOUT
# 设置根日志记录器的级别为 ALL,所有消息都会被记录。根日志记录器会将日志消息发送到名为FILE的没日志目的地(appender)
log4cplus.rootLogger=ALL, FILE
#########################################################################################################

# 控制台输出的配置
# 定义了一个名为STDOUT 的输出目标,这里是将日志输出到控制台。
log4cplus.appender.STDOUT=log4cplus::ConsoleAppender       
# 指定了输出格式为PatternLayout,这允许你定义日志消息的格式。 
log4cplus.appender.STDOUT.layout=log4cplus::PatternLayout   
# 定义了日志消息的格式,包括日期时间、线程名、日志级别、日志记录器名称、日志消息本身等内容。 
log4cplus.appender.STDOUT.layout.ConversionPattern=%D{%Y-%m-%d %H:%M:%S.%q} [%t] %-5p %c - %m%n
#########################################################################################################

# 文件输出的配置
# 基于文件大小滚动,会根据文件大小阈值来创建新的日志文件
# log4cplus.appender.FILE=log4cplus::RollingFileAppender
# 基于时间滚动,会根据一定的时间间隔创建日志文件
log4cplus.appender.ALL_MSGS=log4cplus::TimeBasedRollingFileAppender
log4cplus.appender.FILE.File=sample.log
#设置输出日志路径
log4cplus.appender.FILE.FilenamePattern=./Log/%d{yyyy_MM_dd}.log
log4cplus.appender.FILE.Schedule=DAILY  # 按天存储
log4cplus.appender.FILE.MaxHistory=365  # 最多保留365个文件
log4cplus.appender.FILE.CreateDirs=true # 目录不存在会自动创建
#设置日志文件大小
log4cplus.appender.FILE.MaxFileSize=5MB
#设置生成日志最大个数
log4cplus.appender.FILE.MaxBackupIndex=10
# 日志输出格式 有词法分析功能的模式布局器
log4cplus.appender.FILE.layout=log4cplus::PatternLayout
# log4cplus.appender.FILE.layout.ConversionPattern=%D{%m/%d/%y %H:%M:%S.%q} [%t] %-5p %c - %m%n
# 定义了日志信息的输出格式,包括日期时间、线程信息、位置信息、日志级别、类名和日志消息
log4cplus.appender.ALL_MSGS=log4cplus::TimeBasedRollingFileAppender
  1. C++示例
#include <log4cplus/logger.h>
#include <log4cplus/configurator.h>
#include <log4cplus/loggingmacros.h>

int main() {
    // 初始化log4cplus
    log4cplus::initialize();

    // 从配置文件中加载配置
    log4cplus::PropertyConfigurator::doConfigure("log4cplus.properties");

    // 获取一个logger
    log4cplus::Logger logger = log4cplus::Logger::getRoot();

    // 记录不同级别的日志
    LOG4CPLUS_TRACE(logger, "This is a TRACE message");
    LOG4CPLUS_DEBUG(logger, "This is a DEBUG message");
    LOG4CPLUS_INFO(logger, "This is an INFO message");
    LOG4CPLUS_WARN(logger, "This is a WARN message");
    LOG4CPLUS_ERROR(logger, "This is an ERROR message");
    LOG4CPLUS_FATAL(logger, "This is a FATAL message");

    // 关闭log4cplus
    log4cplus::Logger::shutdown();

    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1547167.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录 图论

目录 797.所有可能得路径 200.岛屿数量 695.岛屿的最大面积 1020.飞地的数量 130.被围绕的区域 417.太平洋大西洋水流问题 827.最大人工岛 127.单词接龙 841.钥匙和房间 463.岛屿的周长 797.所有可能得路径 797. 所有可能的路径 中等 给你一个有 n 个节点的…

基于nginx 动态 URL反向代理的实现

背景&#xff1a; 我们在项目中在这样一个场景&#xff0c;用户需要使用固定的软件资源&#xff0c;这些资源是以服务器或者以容器形式存在的。 资源以webAPI方式在内网向外提供接口&#xff0c;资源分类多种类型&#xff0c;每种类型的资源程序和Wapi参数都一样。这些资源部属…

域名交易系统源码 无需授权即可正常使用,附带后台功能

域名交易系统已测试可正常使用免授权带后台 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/88949686 更多资源下载&#xff1a;关注我。

Unity 打包真机脚本丢失的问题

记录Bug Bug详情分析解决方案附录 Bug详情 项目中导入了UI Particle的Package,用于处理特效层级 unity 运行效果正常&#xff0c;打包真机后运行时发现特效并没有正确显示&#xff0c;真机Log如下图 需要接入查看真机Log工具的点这里 查看图中Log发现对应的Prefab上挂载的脚本…

uniApp中使用小程序XR-Frame创建3D场景(2)加载模型

上篇文章讲述了如何将XR-Frame作为子组件集成到uniApp中使用&#xff0c;只完成了简单的环境搭建&#xff0c;这篇文章讲解如何加载3D模型。 1 加入模型加载标签 在XR-Frame框架中&#xff0c;加载资源都是在wxml文件的标签中实现的。下面是wxml中完整的代码 index.wxml &l…

github vscode 笔记

目录 前言1. 新建代码库2. 下载代码到本地3. 更新代码并上传到github 前言 github方便多人协作维护代码。该笔记记录了下面三个过程&#xff1a; 在github上新建代码库&#xff0c;下载代码到本地&#xff0c;将更新代码并上传到github 1. 新建代码库 2. 下载代码到本地 链…

本地GPU调用失败问题解决1

一&#xff1a;发现问题 1、电脑环境参数&#xff1a; OMEN by Gaming Laptop Windows 11 家庭中文版 2th Gen Intel(R) Core(TM) i9-12900H 2.50 GHz NVIDIA GeForce RTX 3060 Laptop GPU 显存6G PyCharm 2023.1.1(Professional Edition) 2、PyCharm中检测GPU&#x…

web自动化测试系列-selenium的运行原理和常用方法介绍(二)

目录 1.selenium的运行原理 2.常用方法介绍 接上文 &#xff1a;web自动化测试系列-selenium的安装和运行(一)-CSDN博客 在上文中我们编写了一段简单的代码 &#xff0c;可以驱动浏览器访问百度并搜索关键字 。这里我们再把这段代码再拿来加以说明 。 # 1. 导包 from selen…

Linux Tomcat的服务器如何查看接口请求方式?

问题描述 最近在和安卓开发对接接口&#xff0c;遇到一个接口总是报405错误&#xff0c;有对接经验的开发应该都知道是请求方式不对&#xff0c;假如接口定义为POST请求的&#xff0c;但是客户端却用GET请求&#xff0c;这时候就会报这个错误。Android客户端那边使用xUtils框架…

【AutoML】一个用于图像、文本、时间序列和表格数据的AutoML

一个用于图像、文本、时间序列和表格数据的AutoML AutoGluon介绍安装AutoGluon快速上手 参考资料 AutoGluon自动化机器学习任务&#xff0c;使您能够在应用程序中轻松实现强大的预测性能。只需几行代码就可以训练和部署有关图像&#xff0c;文本&#xff0c;时间序列和表格数据…

搭建Spark单机版环境

在搭建Spark单机版环境的实战中&#xff0c;首先确保已经安装并配置好了JDK。然后&#xff0c;从群共享下载Spark安装包&#xff0c;并将其上传至目标主机的/opt目录。接着&#xff0c;解压Spark安装包至/usr/local目录&#xff0c;并配置Spark的环境变量&#xff0c;以确保系统…

计算机网络:物理层 - 编码与调制

计算机网络&#xff1a;物理层 - 编码与调制 基本概念编码不归零制编码归零制编码曼彻斯特编码差分曼彻斯特编码 调制调幅调频调相混合调制 基本概念 在计算机网络中&#xff0c;计算机需要处理和传输用户的文字、图片、音频和视频&#xff0c;他们可以统称为消息数据&#xf…

C#学习笔记3:Windows窗口计时器

今日继续我的C#学习之路&#xff0c;今日学习自己制作一个Windows窗口计时器程序&#xff1a; 文章提供源码解释、步骤操作、整体项目工程下载 完成后的效果大致如下&#xff1a;&#xff08;可选择秒数&#xff0c;有进度条&#xff0c;开始计时按钮等&#xff09; &#xf…

一周学会Django5 Python Web开发-Django5模型定义

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计41条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

并发VS并行

参考文章 面试必考的&#xff1a;并发和并行有什么区别&#xff1f; 并发&#xff1a;一个人同时做多件事&#xff08;射击游戏队友抢装备&#xff09; 并行&#xff1a;多人同时处理同一件事&#xff08;射击游戏敌人同时射击对方&#xff09;

业务服务:xss攻击

文章目录 前言一、使用注解预防1. 添加依赖2. 自定义注解3. 自定义校验逻辑4. 使用 二、使用过滤器1. 添加配置2. 创建配置类3. 创建过滤器4. 创建过滤器类5. 使用 前言 xss攻击时安全领域中非常常见的一种方法&#xff0c;保证我们的系统安全是非常重要的 xss攻击简单来说就…

酷开科技:OTT领域的璀璨明珠

在广袤的科技海洋中&#xff0c;酷开科技犹如一颗璀璨的明珠&#xff0c;以其独特的魅力和卓越的实力&#xff0c;引领着OTT领域的发展。自2014年前后&#xff0c;彩电业遭遇三十年来首次的销量滑坡&#xff0c;整个行业陷入了“寒冬”。在这个艰难的时刻&#xff0c;酷开科技却…

pure-admin

vue-pure-admin: &#x1f525; 全面ESMVue3ViteElement-PlusTypeScript编写的一款后台管理系统&#xff08;兼容移动端&#xff09;

GBU3510-ASEMI开关电源整流桥GBU3510

编辑&#xff1a;ll GBU3510-ASEMI开关电源整流桥GBU3510 型号&#xff1a;GBU3510 品牌&#xff1a;ASEMI 封装&#xff1a;GBU-4 平均正向整流电流&#xff08;Id&#xff09;&#xff1a;35A 最大反向击穿电压&#xff08;VRM&#xff09;&#xff1a;1000V 产品引线…

【jenkins+cmake+svn管理c++项目】windows修改jenkins的工作目录

jenkins默认的存放源码的workspace是&#xff1a; C:\Users\用户\AppData\Local\Jenkins\.jenkins\workspace。由于jenkins会拉取大量的源代码以及编译生成一些文件&#xff0c;我希望我能自己指定目录作为它的工作空间&#xff0c;放在这里显然不太合适。 那么修改目录的方式有…