花了2周时间移植了log4c1.2.2,比预想的时间长了点大概做了以下几件事:
移植log4c到win32 pc平台
移植log4c到arm和mips平台
编译成dll文件并测试
log4c的结构非常清晰主要就是3个东西:
layout:输出日志的打印格式(dated, basic 等).
appender:输出日志的目的地(stdout、本地文件、轮询文件等)需要指定它的layout.
category:每一条日志的模块名称(名字自取),需要指定它的appender.
log4c到目前为止对linux支持的最好,基本不用做什么修改就能直接编译。在windows上面移植难度也不大,有几个小的结构找不到,做一些替换就行。由于对log4c内部的xml解析模块没有看懂,而且觉得它用的东西有点复杂,所以在网上找了个最近比较流行的xml解析工具rapidxml,确实好用。并根据log4c的init模块自己重新写了读取xml配置文件和初始化log4c模块,反正就是参照它的初始化步骤改的。
移植到wince上有很多问题,主要的就是wince缺少stat.h、string.h和io.h头文件,对于我这种第一次在嵌入式上开发的菜鸟来说替换那几个头文件的函数确实费了一点时间。其中对string.h中的几个字符串操作函数自己进行了重写(幸好io.h的接口都找到了wince下的替代函数。。。)
另外在编译成dll文件后测试发现程序老是报fatal错误,后来才知道原来是栈空间分配太少,以后对wince编程栈空间的分配一定要注意!
最后还做了个支持unicode的日志接口,不过由于log4c内部没有宽字符的打印函数,导致在输入变参时只能输出变参的头一个字符,也是因为我对c的变参函数还不是完全掌握有关。这个遗留问题还得解决。
另外发现程序中频繁malloc内存容易造成内存碎片,对于频繁分配的内存尽量使用数组形式。
通过这段时间熟悉了dll的基本原理对wince下的编码特性也有了一定的了解。
编程熟练度和解决问题去网上找答案的能力还有待提高。
posted on 2010-06-04 10:34
saha 阅读(3645)
评论(2) 编辑 收藏 引用