`
ferreousbox
  • 浏览: 284681 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

在OSGI中应用apache loggin日志组件

阅读更多

    日志组件是每一个系统在开发的时候必不可少的东东,目前已经有了很多日志组件,如log4j、jdk的logger等,其他作为日志门面的有apache的commons.logging、slf4j等,它们都是用来整合不同的日志组件的,避免系统依赖于某一个特定的日志组件,在slf4j出现以前,大家最常用的组合就是commons logging和log4j了,所以很多以前开发的组件(如apapche的绝大多数组件)都是采用commons logging来记录日志。

 

    在OSGI环境中使用日志其实是一个比较麻烦的问题,毕竟很多以前开发的组件并不是为OSGI而设计的,所以有诸多不良反应,而这些组件又大多数使用了commons logging,因此在OSGI中整合使用commons logging也是必须的。今天我这里主要就是介绍下在OSGI环境中使用commons logging,然后使用的实现类就是JDK的logger,使用步骤如下:

 

1.在你的bundle中只使用org.apache.commons.logging.Log,eclipse已经自带了org.apache.commons.logging_1.0.4这个bundle,因此,只需要在你的bundle中导入org.apache.commons.logging包即可;

 

2.配置config.ini文件,添加如下内容:

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
java.util.logging.config.file=configuration/logger.properties

config.ini文件存放在configuration目录下,eclipse的euqinox在启动的时候会把所有的属性都设置到系统属性中(可以通过System.getProperty来获取)

 

3.在第2步中,我们设置了JDK的日志配置文件logger.properties,在configuration目录下,和config.ini同一目录,其内容如下:

handlers= java.util.logging.FileHandler
.level= DEBUG

java.util.logging.FileHandler.pattern = my-log-%u.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter

这些配置会被JDK的LogManager获取并配置日志,我这里是使用文件记录,具体的可以参考JDK的日志配置。

 

4.通过这些配置后,我们就可以使用commons logging来将日志通过JDK的logger导出到文件中了,当然也可以使用JDK logger的其他特性。

 

    在OSGI中使用JDK的logger的好处就是不用担心ClassLoader的问题了,以上的方法是整合commons logging组件,使用log4j也就是配置调整的问题了。

当然在OSGI中还有其他方式来实现日志,比如使用OSGI本身的日志服务、使用slf4j日志组件等。

2
1
分享到:
评论
1 楼 sunger 2011-12-05  
我的每隔bundle里面都要导入这个包吗? 那太麻烦了 ,有其他的方法?

相关推荐

Global site tag (gtag.js) - Google Analytics