log4cplus使用

摘要:
框架描述:Log4cplus使用指南C++日志库Log4cplus:SocketAppender将日志记录到logServer配置文件:Log4cplus库(IV)Log4cplus配置文件使用了最近项目的日志记录功能,因此我学会了编写Log4cplus框架,下载了源代码并研究了几天。以上文章对我的学习过程都很有帮助。接下来,我将向我展示学习log4cplus源代码时绘制的系统的重要类结构,以便于理解。有时图形没有标准化,因此您可以理解它。

框架说明:

​Log4cplus使用指南 

C++日志库log4cplus:SocketAppender记录日志到log Server

配置文件:

log4cplus库(四)(优先级与日志配置)

log4cplus配置文件使用

    最近项目涉及到日志记录功能,因此学习了写log4cplus框架,下载下来源码后研究了几天,上面几篇文章都是学习过程中觉着对我有帮助的。

    下面记录下我最近学习log4cplus的一些知识和自己的想法​​

日志输出原则:​

1、在程序开始运行应该以INFO记录程序开始运行的消息;

2、在程序初始化过程中,如果影响程序主体正常运行错误出现,应该以FATAL记录出现错误的函数名、事件和错误号;如果只是一个不影响程序正常功能的模块出现错误,则应该以ERROR记录出现错误的函数名、模块名、事件和错误号;

3、在程序初始化完成后,应该以INFO记录程序初始化完成的消息;

4、在函数的入口,如果需要验证参数,则可以DEBUG的形式输出参数的信息。如果重要参数不正确,则应该以ERROR输出; 

5、程序的输入和输出要以Debug记录下来,包括:从文件、数据库、网络、用户等输入的信息,向文件、数据库、网络输出的信息;

6、对重要结构体的修改,要以Info记录修改前、后的状态;

7、在调用比较成熟的API时,如果失败,则以ERROR记录,并且有错误号记下错误号;

8、在调用没有经过严格测试的库时,即使返回成功,也要以DEBUG的形式记录下返回的结果;

9、以捕获异常时,以ERROR记录下错误;

10、在进行数据库操作时,以DEBUG的级别输出执行的SQL词句,对于取回的结果,最好是能打印出所有构造完成的对象的信息;

11、在与其它程序进行通信时,以DEBUG记录下通信过程中的重要信息;

12、对程序中的每个线程,它们的初始化完成和开始运行也要以INFO记录下来;

13、对程序中需要检查运行性能的地方,以DEBUG记录下运行耗时;

14、程序正常结束时,和初始化的记录方式相同,对各个模块的卸载采用和加载是一样的处理方式。当程序都卸载完成后以INFO记录程序退出的消息。

    下面给我出我学习log4cplus源码时画出的系统重要类结构,志在理解,画的图有时候不规范,大家将就理解下。​

    图1主要给出了框架中日志输出位置类继承关系图,从图中可以看出,框架提供了很多日志输出的设备,比如:控制台、文件、网络等等。​

log4cplus使用第1张图1 appender

    图2是配置文件类,通过该类可以完成对logger、appender和layout的配置,很方便,推荐使用

log4cplus使用第2张图2  configure

图3也比较复杂,主要实现了多种工厂,理解一般

log4cplus使用第3张图3 工厂

图4是过滤器类结构,过滤器总有4中模式,按图中顺序依次为:拒绝所有过滤器、串匹配、等级匹配和区间匹配

log4cplus使用第4张图4 过滤器

图5是分类器

log4cplus使用第5张图5 层级类

图6 格式输出类,从左到右格式依次复杂,简单格式输出只添加日志等级和‘-’作为输出日志信息,TTCCLayout输出类添加了线程ID、文件行数等信息,PatternLayout是格式化输出类,用户可以自由拼接

log4cplus使用第6张图6 输出格式类

图7是日志记录者

log4cplus使用第7张图7 logger

图8是日志等级管理者

log4cplus使用第8张 图8 等级管理者

图9是socket类关系

log4cplus使用第9张图9 socket通信

图10是线程同步类,主要包括:5中线程同步类,SyncGuardFunc和SyncGuard是一个方便类,在构造对象时传入不同的线程同步类,他会自动加锁,并在对象析构时自动解锁

log4cplus使用第10张图10 线程同步类

图11线程类

log4cplus使用第11张图11 线程

图12是时间类,可以用来测试程序效率

log4cplus使用第12张图12 时间类

    上面贴出了12张图,都是log4cplus中的类,也比较好理解,具体的分析读者可以看文章开头的链接,讲的都比较详细。

免责声明:文章转载自《log4cplus使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇新能源汽车三大核心技术JAVA解析XML与C#解析XML(DOM,SAS,JDOM,DOM4J)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Kafka 权限管理实战(最全整理)

一、概述 1、Kafka的权限分类 1)、身份认证(Authentication):对client 与服务器的连接进行身份认证,brokers和zookeeper之间的连接进行Authentication(producer 和 consumer)、其他 brokers、tools与 brokers 之间连接的认证。 2)、权限控制(Authorizatio...

关于2000W数据

前几天在博客园首页看到这个2000W数据的消息,刚好这个学期正在SQL入门,加上好奇心的驱使,把这个下载下来。 一个是600多M的CSV文件,还有一个是1.7G的SQL Server的备份文件,解压后都接近8G了,试着在sql server2000上导入一下,貌似直接就说太多了……汗 所以,只好先看看这个CSV文件了,这个解压后也接近2G了,一般的文本编辑器...

主流消息队列rocketMq,rabbitMq比对使用

首先整理这个文章是因为我正好有机会实战了一下rocketmq,阿里巴巴的一个开源消息中间件。所以就与以往中rabbitmq进行小小的比较一下。这里主线的根据常见面试问题进行整理。 一.消息队列常用的场景   1.削峰    例如我们做得考试系统中,用户通过人脸识别登录系统,考虑到考试系统的特殊性,三万名考生参加考试,需要记录人脸识别登录照片。从考试完结果上...

VS关于生成exe文件图片不显示的解决以及两种简单的打包方法

当辛辛苦苦写好一段带有图形界面的代码而exe无法进行图形输出,显然是一件十分苦恼的事情,下面就提供一种此类问题的解决方案,并且简单介绍一种最简单的打包方法以及vs的一种打包 问题描述 当代码在vs上运行时可以得到正常的图形输出 然而而通过exe文件打开却是一片漆黑 问题分析 既然vs上可以正常运行,说明代码是没有问题的,想要解决问题显然下一步需要从ex...

domino控制台命令

Broadcast message 向该服务器的用户广播消息 Broadcast message usernames 向该服务器的某一用户广播消息 Dbcache Flush 关闭当前在数据库高速缓存中打开的所有数据库。使用此命令可以在高速缓存中维护数据库,例如:备份或恢复数据库。 Drop username 关闭一个或多个服务器会话。如果...

持续集成 TeamCity 的配置与使用

环境:实现自动编译与自动化测试,发布到远程服务器,环境 VS2015 +WIN2008R2 什么是TeamCityTeamCity是由Jetbrains开发的一款功能强大的持续集成(Continue Integration)工具,包括服务器端和客户端,目前支持Java,.Net 等项目开发。 TeamCity提供一系列特性可以让团队快速实现持续继承:IDE...