应用开发中的Log技术(一)
2012-07-12 18:21:29| 分类: | 标签: |字号 大中小
开发过程中,log是一种重要的调试手段。目前Android系统提供了logcat,而且也有Api接口,供开发人员在编程时直接使用这种技术进行log输出。 Linux系统也有即的log系统,但不清楚有没有提供Api接口供开发人员在编程时使用。 使用系统的log系统有很多优点,例如不用自己变成实现log管理功能,直接使用系统提供的Api接口即可。但是,也有不便之处。例如,诸多应用的log和系统本身的log混杂在一起,不方便,虽然可以查询的时候进行过滤;不知是否动态设置哪个级别log进行输出,避免不必要的输出,减少地系统资源的 消耗;不知道是否支持有些信息仅作为debug时的功能存在。如果要自己写一个log系统,则如下几个需求应该是可以考虑的:1.有些log输出功能仅在debug时存在 ,在release版本中直接没有该功能了。这对提高release版本的运行效率是有好处的。在c语言开发中,可以通过宏定义来实现,则在release版本中, 编译之后的实际代码中,完全没有这些功能。2、log支持分级,可以在程序运行过程中动态设置启用哪些级别的log功能这可以通过if等条件语句来实现,和1相比,编译之后,该功能的代码是存在的,只是在运行时不执行该分支。
3、log支持通过某个控制台、管道、串口等输出,也应该支持保存到文件中。
应该支持通过进行设置更改输出目的地。
4、支持分类,不同分类,可以输出到不同的目的地。
5、保存成文件时,应该支持根据时间啥的进行管理,例如可以支持每个小时输出成一个文件,每天的输出作为一个目录等等。
6、对debug信息,可以在其中包含文件和行数信息,将来对log阅读管理时,可以和源码阅读关联起来,例如,可以双击某一个log,则直接跳到相应的位置。
网上可用的log库
目前了解,Log4j系列有很多在c和c++上的类似库,例如Log4c、Log4cpp、Log4cxx、Log4net等等。
另外还有:google的 GLog, Log4j作者推出的另一种开源Log系统:LogBack
Log4c是纯c实现的,可移植性要比其他几种好。后面是网址:
官网:
嵌入式移植: 该项目已经停止。
下面网址中有一个非常简单的:该作者的空间中还有几篇很不错的文章和例子:例如Linux下经过调试的mempool、例如zero-copy 的:使用sendfile()让数据传输得到最优化,TCP_CORK、TCP_DEFER_ACCEPT和TCP_QUICKACK优化网络