2_log4cpp配置文件的使用

  • 0 log4cpp
  • 1 配置文件说明
    • 1 rootCategory
    • 2 自定义Category
  • 2 实验代码
  • 2.1 配置文件
  • 2.2 代码
  • 2.3 代码编译

0 log4cpp

log4cpp种最重要的概念有Category(种类)、Appender(附加器)、layout(布局)、Priority(优先级)、NDC(嵌套的诊断上下文)。

其中,Category、Appender与Layout三者的关系如下图所示:

1 配置文件说明

1 rootCategory

log4cppcategory分为rootCategory和其他自定义的category。而每个category均可以输出到多个appender,且category也是具有包含关系的。如rootcategory为所有category的根,且自定义的category也可以具有包含关系。
如下是一个rootcategory的配置。

log4cpp.rootCategory=DEBUG, rootAppender1, rootAppender2

这个定义里,指定rootcategory的log优先级为DEBUG,其中根Category包含两个appender,分别为 rootAppender1rootAppender2

2 自定义Category

log4cpp.category.demo=DEBUG, sample

这个定义中,指自定义了一个名字为democategory,其日志优先级为DEBUGappender的名字为sample

2 实验代码

2.1 配置文件

# 定义root Category的属性
log4cpp.rootCategory=DEBUG, rootAppender# 自定义三个 category 的属性
log4cpp.category.sub1=DEBUG, A1, A2
log4cpp.category.sub1.sub2=DEBUG, A3
log4cpp.category.txhAppender=DEBUG, txh# 配置root Category中 rootAppender 的输出位置 输出格式,
log4cpp.appender.rootAppender=ConsoleAppender
log4cpp.appender.rootAppender.layout=PatternLayout
log4cpp.appender.rootAppender.layout.ConversionPattern=%d [%p] %m%n # 配置自定义 appender “A1” 的 输出位置和输出格式
log4cpp.appender.A1=FileAppender
log4cpp.appender.A1.fileName=A1.log
log4cpp.appender.A1.layout=BasicLayout# 配置自定义 appender “A2” 的 输出位置和输出格式
log4cpp.appender.A2=FileAppender
log4cpp.appender.A2.threshold=WARN
log4cpp.appender.A2.fileName=A2.log
log4cpp.appender.A2.layout=PatternLayout
log4cpp.appender.A2.layout.ConversionPattern=%d [%p] %m%n # 配置自定义 appender “A3” 的 输出位置和输出格式
log4cpp.appender.A3=RollingFileAppender
log4cpp.appender.A3.fileName=A3.log
log4cpp.appender.A3.maxFileSize=200
log4cpp.appender.A3.maxBackupIndex=1
log4cpp.appender.A3.layout=PatternLayout
log4cpp.appender.A3.layout.ConversionPattern=%d [%p] %m%n # 配置名字为  “txh”  的 自定义 appender的 输出位置和输出格式
log4cpp.appender.txh=SyslogAppender
log4cpp.appender.txh.layout=PatternLayout
log4cpp.appender.txh.layout.ConversionPattern=%d [%p] %m%n

2.2 代码

#include <unistd.h>
#include "log4cpp/Category.hh"
#include "log4cpp/Appender.hh"
#include "log4cpp/FileAppender.hh"
#include "log4cpp/OstreamAppender.hh"
#include "log4cpp/Layout.hh"
#include "log4cpp/BasicLayout.hh"
#include "log4cpp/Priority.hh"
#include "log4cpp/PropertyConfigurator.hh"
#include "log4cpp/SyslogAppender.hh"
#include "log4cpp/LoggingEvent.hh"
#include <log4cpp/PatternLayout.hh>int main(int argc , char* argv[])
{try{log4cpp::PropertyConfigurator::configure("./log4cpp.conf");}catch(log4cpp::ConfigureFailure& f){std::cerr << f.what() << std::endl;return -1;}log4cpp::Category& root = log4cpp::Category::getRoot();log4cpp::Category& sub1 = log4cpp::Category::getInstance(std::string("sub1"));log4cpp::Category& sub2 = log4cpp::Category::getInstance(std::string("sub1.sub2"));log4cpp::Category& txh  = log4cpp::Category::getInstance(std::string("txhAppender"));root.warn("stom is coming");sub1.debug("Received storm warning");sub1.info("closing all hatches");sub2.debug("Hiding solar panels");sub2.error("Solar panels are blocked");sub2.debug("Applying protective shield");sub2.warn("Unfolding protective shield");sub2.info("Solar panels are shielded");sub1.info("All hatches closed");root.info("Ready for storm.");while(1){txh.info("caonima");sleep(1);}log4cpp::Category::shutdown();
}

2.3 代码编译

g++ test2.cpp -o main -llog4cpp -lpthread

【log4cpp_学习】2_log4cpp配置文件的使用相关推荐

  1. VIM学习笔记 配置文件(vimrc)

    为什么80%的码农都做不了架构师?>>>    VIM学习笔记 配置文件(vimrc) 在vim启动过程中,首先将查找配置文件并执行其中的命令.而这些初始化文件一般有vimrc.gv ...

  2. 从零学习Nginx配置文件,呕心沥血w字长文

    1 Nginx介绍 1 Nginx基本概念 可以理解为 nginx 是服务器的软件 1.1 反向代理 **正向代理:**需要在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问. 反向代理: ...

  3. redis学习之三配置文件redis.conf 的含义

    摘自http://www.runoob.com/redis/redis-conf.html 安装redis之后的第一件事,我就开始配置密码,结果总是不生效,而我居然还没想到原因.今天突然用命令行设置了 ...

  4. nginx的学习(配置文件,以及部署的疑惑)

    1.在windows下安装nginx,解压之后,在此目录下,dos进去,start nginx 2.配置文件: http {     include       mime.types;     def ...

  5. DotText源码学习——从配置文件Web.config入手(一)

    2010-03-19 17:18 by 吴秦, 2409 阅读, 12 评论, 收藏, 编辑 概述 ASP.NET配置数据存储在名为Machine.config/Web.config的XML文本文件中 ...

  6. Spring Boot 学习之配置文件 application.yml

    一.创建配置文件 如图所示,我们在resources文件夹中新建配置文件application.yml 结构图 二.一些基本配置 server: port: 8090 //配置端口session-ti ...

  7. FATE学习:配置文件解析及V1/V2版本对比

    综述 为了让任务模型的构建更加灵活,目前 FATE 使用了一套自定的领域特定语言 (DSL) 来描述任务. 在 DSL 中,各种模块(例如数据读写 data_io,特征工程 feature-engin ...

  8. kafka配置文件 中文乱码_Kafka学习之配置文件详解

    ------------------------------------------- 系统 相关 ------------------------------------------- ## 每一个 ...

  9. spring-security学习笔记--配置文件

    来源:http://blog.sina.com.cn/s/blog_7c3328d701013fct.html <?xml version="1.0" encoding=&q ...

  10. ambassador 学习五 配置文件简述

    Ambassador 配置通过yaml 的定义文件 格式 apiVersion 版本,当前支持的版本为 ambassador/v0 kind 支持的类型,目前有Module AuthService R ...

最新文章

  1. python 对 yaml 文件操作
  2. POJ 3126 Prime Path
  3. 直播丨分布式数据库:从PG-XL到TBASE
  4. MyBatis之基于XML的动态SQL
  5. echarts-for-react的使用详解
  6. Qt4_快速设计对话框
  7. 熟悉 CMake (三)—— 配置 opencv3
  8. 主键和外键举例_数据库-主键和外键及其约束
  9. Hadoop大数据开发技术
  10. 【高效学数据库】第一范式、第二范式、BCNF范式、第三范式、第四范式概念及举例
  11. 防火墙结构之双重宿主主机结构
  12. sis最新ip地址2020入口一_2020最新国风修仙问道3DMMORPG手游大道争锋官网正版首发入口...
  13. 无线连接中心服务器连接异常,解决Win7/Win8.1的无线网络连接受限故障
  14. 5.系统设计的工作内容与技能工具有哪些?
  15. RESTful架构和实现级别
  16. 曼哈顿算法公式_距离计算方法总结 | Public Library of Bioinformatics
  17. C语言基础习题及答案7
  18. Muli3D 9 CubeTexture的采样原理
  19. 什么是计算机网络协议叙述协议的三要素,网络协议的含义及三要素是什么
  20. 网页端Skype更新 在桌面/移动平台添加对Safari的支持

热门文章

  1. nano命令,vi ed pico sed joe emacs jed ex
  2. JSP九大内置对象的作用和用法
  3. python编程基础及应用教程答案_Python编程基础教程
  4. Python核心编程第二版 第七章课后练习 7-6. 列表和字典
  5. 服务器修改开机启动项,启动项设置_服务器开机启动项
  6. 安装马上6的问题解决
  7. c#明华rf读卡器_:C# 实现明华读卡器(2)
  8. 避坑!!!Matlab中文版下载地址、详细讲解Matlab中文版的下载、安装
  9. 张宇1000题高等数学 第十三章 多元函数微分学
  10. Modbus 调试工具: Modbus poll与Modbus slave下载与使用(下)