posts - 0,  comments - 5,  trackbacks - 0
   花了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 阅读(3541) 评论(2)  编辑 收藏 引用

FeedBack:
# re: log4c移植总结
2011-01-10 20:14 | wkj
log4c 的WIN32移植,能否提供一个共享的版本呢?
现在想在WIN上用这个日志库,移植稍微花点时间。共享一下吧。  回复  更多评论
  
# re: log4c移植总结[未登录]
2011-01-11 11:52 | saha
不好意思,这是我在公司开发的代码拿不出来
大概步骤就是用rapidxml替换了log4c内部自带的xml解析来解析它的配置文件
然后重写了Init模块,可以完全参照源代码只要把对外的接口改成你需要的即可@wkj
  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



<2011年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿

文章分类

文章档案

收藏夹

搜索

  •  

最新评论