日志组件是每一个系统在开发的时候必不可少的东东,目前已经有了很多日志组件,如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日志组件等。
分享到:
相关推荐
框架布局通常指出了OSGi环境中的不同组件如何组织在一起,而功能层描述了在OSGi环境中运行的应用程序的层次结构。束生命周期状态则涉及到OSGi中组件从安装到激活、停止和卸载的不同阶段。束布线是指不同束之间的依赖...
标题"OSGI中Hibernate扩展在felix中的应用"指的是如何在OSGI Felix框架中整合和使用Hibernate。Felix是Apache软件基金会的一个项目,它是OSGI规范的开源实现。将Hibernate引入OSGI环境,可以实现更灵活的部署和管理...
通过逐一研究这些源代码,读者可以逐步学习OSGi的核心概念,了解如何在实际项目中运用Apache Felix。每个章节的代码都是一个精心设计的示例,旨在帮助读者理解OSGi框架的强大功能,并提供动手实践的机会。对于想要...
Java ClassLoader机制是Java虚拟机(JVM)中一个至关重要的组成部分,它的主要任务是将类的.class文件加载到JVM中...理解并掌握ClassLoader的工作原理和在OSGi中的应用,对于开发高效、可扩展的Java应用程序至关重要。
9. **实战应用**:"OSGI实战.pdf"可能包含实际项目案例,演示如何在真实场景中应用OSGI解决特定问题。 通过阅读这份文档和解压后的"dist.rar"和"code.rar"文件,你不仅可以深入了解OSGI技术,还能获得实践经验,...
OSGI组件编程是一种在Java平台上构建模块化应用程序的方法,它由OSGi联盟制定标准,并被广泛应用于企业级软件开发,尤其是对于需要高度可扩展性和动态性的系统。在本教程中,我们将深入探讨如何使用Eclipse和Equinox...
《OSGi与Apache Felix 3.0初学者指南》是一本深入浅出地介绍OSGi框架及其在Apache Felix实现下的应用开发的书籍。OSGi(Open Service Gateway Initiative)是一种Java平台上的模块化系统和动态模块加载环境,它允许...
9. **最佳实践和案例研究**:书中可能会包含实际项目中的案例,展示如何在真实场景中应用OSGi和Apache Felix,提供最佳实践和避免常见问题的建议。 10. **安全性和权限管理**:学习OSGi的安全模型,如何控制bundle...
为了在OSGI环境中运行这个应用,我们需要一个OSGI容器,如Apache Felix或Eclipse Equinox。这些容器负责加载和管理bundle,以及它们之间的依赖关系。每个技术(Spring、Mybatis、Spring MVC)都需要对应的OSGI兼容...
通过OSGi,开发者可以轻松地管理和控制应用程序中的各个模块(即bundles),并能够在运行时动态安装、启动、停止和卸载这些模块。 ##### OSGi框架 为了开发基于OSGi的应用程序,需要使用实现了OSGi标准的框架。...
这种基于OSGi的日志管理方案以插件形式部署到应用程序中。这意味着系统管理员可以随时卸载这个OSGi插件,让应用回到使用原始的本地日志存储方式。这种方法的优点在于它的灵活性和便利性,可以根据需要快速切换日志...
为了在Tomcat中部署OSGi应用,我们需要一个桥接工具,如Apache Felix的WebConsole或Pax Web。这些工具可以将OSGi环境集成到Tomcat中,允许OSGi bundles作为Web应用的一部分运行。 Apache Felix WebConsole是一个...
在OSGI(Open Service Gateway Initiative)应用环境中,整合Spring、Mybatis和Spring MVC可以实现模块化、可热更新和高效的企业级应用开发。OSGI是一个Java框架,它允许动态地安装、卸载和升级服务,提供了强大的...
4. 尽量将共享库打包成Fragment Bundle,而不是将它们包含在应用Bundle中。 5. 明确每个Bundle的作用和责任,合理规划 Bundle 的生命周期管理。 6. 使用白名单方式来控制服务的导出和导入,以增强模块的封装性。 7. ...
在基于OSGi和Spring开发Web应用的过程中,首先需要指定Target Platform到所有需要用到的bundle包目录中,这是为了确保开发环境能够识别并正确加载所有必要的组件。接下来,创建一个服务接口bundle,定义接口类及其...
在IT行业中,OSGi(Open Services Gateway Initiative)是一种模块化软件开发框架,它允许开发者将应用程序分解为独立的、可重用的组件,称为服务。这些组件可以动态地安装、卸载和升级,无需重启应用服务器。...
Gemini Blueprint是OSGi环境中用于管理服务和组件的一种工具,它基于Spring Blueprint规范,提供了在OSGi容器中使用Spring应用上下文的功能。 这篇名为“osgi gemini blueprint环境”的博文可能详细阐述了如何配置...
标题中的“在Eclipse RCP中应用Spring OSGI 管理bean(一)”表明这是一篇关于如何在Eclipse Rich Client Platform (RCP)应用程序中集成Spring框架,并利用OSGi服务来管理Bean的教程。Eclipse RCP是一个用于构建桌面...
包含电子书和第04、05、06、07、08、09、10、11、13章的代码, 是学习OSGi和Apache Felix的一个很好的入门资料, 虽然版本有一点点老了, 但是基本的东西没有变, 值得下下来一看!
利用R-OSGi实现分布式OSGi应用 本文通过介绍传统 OSGi 应用程序及 R-OSGi 的实现方式入手,阐述了 R-OSGi 对于 OSGi 规范的实现方式。然后通过一个简单的功能实现由浅入深地讲述传统 OSGi 和 R-OSGi 上的两种不同...