博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
log4cplus使用
阅读量:6257 次
发布时间:2019-06-22

本文共 1466 字,大约阅读时间需要 4 分钟。

框架说明:

 

配置文件:

    最近项目涉及到日志记录功能,因此学习了写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主要给出了框架中日志输出位置类继承关系图,从图中可以看出,框架提供了很多日志输出的设备,比如:控制台、文件、网络等等。​

图1 appender

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

图2  configure

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

图3 工厂

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

图4 过滤器

图5是分类器

图5 层级类

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

图6 输出格式类

图7是日志记录者

图7 logger

图8是日志等级管理者

 
图8 等级管理者

图9是socket类关系

图9 socket通信

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

图10 线程同步类

图11线程类

图11 线程

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

图12 时间类

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

转载地址:http://tcxsa.baihongyu.com/

你可能感兴趣的文章
一键让应用程序适配 iphone5
查看>>
http 长连接和轮询
查看>>
Windows CE 6.0的安装,简单定制和导出SDK--转载
查看>>
在Windows Server 2008 R2上安装Exchange 2013过程中遇到的一些问题
查看>>
Maven POM入门
查看>>
codeforces 6A. Triangle
查看>>
仿CSDN Blog返回页面顶部功能
查看>>
【HTML5游戏开发小技巧】RPG情形对话中,令文本逐琢夸出
查看>>
ORA-04031:
查看>>
早晚有一天,我们都会成为自己当初讨厌的人
查看>>
基于SMTP协议的CMD命令邮件发送
查看>>
九度笔记之 1209最小邮票数
查看>>
Java中swap解惑
查看>>
HDU 2068 RPG的错排
查看>>
操作数有自增操作时复合表达式的陷阱
查看>>
从WW中剥离一个三维场景框架
查看>>
ASP.NET网页动态添加、更新或删除数据行
查看>>
vbs获取当前主机IP
查看>>
IIS7中的站点、应用程序和虚拟目录详细介绍
查看>>
为何C语言(的函数调用)需要堆栈,而汇编语言却不需要堆栈
查看>>