最近在看关于OSGi方面的内容,自己做了些简单的例子。虽然在log方面OSGi有提供一些实现,但我们javaer们早已习惯了log4j,于是很想试试看log4j在OSGi上能不能用。
在网上搜了下,相关的资料不多也不少,但都不是很详细,所以记下来,方便大家参考一下。
例子用到了:
- apache的felix(版本4.0.2)
- springDM(版本1.2.1)中的log4j的jar包。
首先,实现一个bundle类:
public class Activator implements BundleActivator
{
private static final Logger log = Logger.getLogger(Activator.class);
public void start(BundleContext context)
{
log.info("Starting our bundle.");
}
public void stop(BundleContext context)
{
log.info("Stopping our bundle.");
}
}
代码十分简单,仅仅是为了看看我们的log是否都工作,接着准备相应的manifest.mf文件:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.6.0_29-b11-402-11M3527 (Apple Inc.)
Bundle-Name: LogTest
Bundle-Description: A bundle that test logging
Bundle-Vendor: OuYang
Bundle-Version: 1.0.0
Bundle-Activator: tutorial.example1.Activator
Bundle-ManifestVersion: 2
Import-Package: org.osgi.framework,org.apache.log4j
Bundle-SymbolicName: exampleOne
因为用到了log4j,所以Import-Package中加上了org.apache.log4j,接着把上面的Activator.class文件和manifest.mf文件打包成jar文件(命名为example1.jar)。
要在OSGi中使用log4j,需要在一个单独的bundle中提供log4j.properties文件,并且这个bundle要定义成fragment的,先看manifest.mf文件:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.6.0_29-b11-402-11M3527 (Apple Inc.)
Bundle-ManifestVersion: 2
Bundle-SymbolicName: Log4JProperties
Fragment-Host: org.springframework.osgi.log4j.osgi
上面的Fragment-Host: org.springframework.osgi.log4j.osgi表示这个bundle是fragment的,它的主bundle是org.springframework.osgi.log4j.osgi,也就是springDM中的log4j这个jar包了。
接着准备一个log4j.properties文件:
log4j.rootLogger=INFO, stdout, R
log4j.logger.tutorial=INFO
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d]-%-5p %t | %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=/Users/ouyang/logs/osgi-new-test.log
log4j.appender.R.MaxFileSize=5000KB
log4j.appender.R.MaxBackupIndex=5
log4j.appender.R.Threshold=DEBUG
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%d]-%-5p %t | %m%n
接着把manifest文件和log4j.properties文件打包成jar文件(命名为log-bundle.jar)。
最终生成的两个bundle的结构如下:
example1.jar
--tutorial.example1
--Activator.class
--MATE-INF
--MANIFEST.MF
log-bundle.jar
--MATE-INF
--MANIFEST.MF
--log4j.properties
最后启动felix,安装并启动相关的bundle,就可以看到log 信息被成功的输出了。
g! install file:///Users/ouyang/Desktop/123/log4j.osgi-1.2.15-SNAPSHOT.jar
Bundle ID: 5
g! install file:///Users/ouyang/Desktop/123/log-bundle.jar
Bundle ID: 6
g! install file:///Users/ouyang/Desktop/123/example1.jar
Bundle ID: 7
g! lb
START LEVEL 1
ID|State |Level|Name
0|Active | 0|System Bundle (4.0.2)
1|Active | 1|Apache Felix Bundle Repository (1.6.6)
2|Active | 1|Apache Felix Gogo Command (0.12.0)
3|Active | 1|Apache Felix Gogo Runtime (0.10.0)
4|Active | 1|Apache Felix Gogo Shell (0.10.0)
5|Installed | 1|log4j.osgi (1.2.15.SNAPSHOT)
6|Installed | 1|Log4JProperties (0.0.0)
7|Installed | 1|Service listener example (1.0.0)
g! start 7
[2012-01-04 17:09:43,974]-INFO Gogo shell | Starting our bundle.
g! stop 7
[2012-01-04 17:09:49,151]-INFO Gogo shell | Stopping our bundle.
g!
分享到:
相关推荐
log4j-2.17升级版本包,包括log4j-1.2-api-2.17.1.jar、log4j-api-2.17.1.jar、log4j-core-2.17.1.jar、log4j-slf4j-impl-2.17.1.jar、log4j-web-2.17.1.jar
在Java开发中,日志管理是不可或缺的一部分,Log4j作为一款广泛使用的日志记录框架,为开发者提供了强大的日志处理能力。Eclipse IDE,作为Java开发的主流工具,也支持通过插件的形式集成Log4j,以便在开发过程中更...
在本文中,我们将深入探讨Spring DM(现在称为Spring OSGi)中的Fragment Bundle以及如何配置Log4j在Fragment Bundle中的应用。Spring DM是Spring框架在OSGi(Open Service Gateway Initiative)环境下的扩展,它...
该压缩包中包含以下内容: 1、jcl-over-slf4j-1.7.21.jar 2、jcl-over-slf4j-1.7.21-sources.jar 3、jul-to-slf4j-1.7.21.jar 4、jul-to-slf4j-1.7.21-sources.jar 5、log4j-over-slf4j-1.7.21.jar 6、log4j-over-...
该压缩包中包含以下内容: 1、jcl-over-slf4j-1.7.21.jar 2、jcl-over-slf4j-1.7.21-sources.jar 3、jul-to-slf4j-1.7.21.jar 4、jul-to-slf4j-1.7.21-sources.jar 5、log4j-over-slf4j-1.7.21.jar 6、log4j-over-...
【标题】"killbill-osgi-bundles-lib-slf4j-osgi-0.8.4.zip" 是一个基于OSGi的 Kill Bill 库,其中包含了SLF4J(Simple Logging Facade for Java)的OSGi兼容版本。SLF4J是一个为各种日志框架提供简单抽象的接口,...
5、log4j-over-slf4j-1.7.21.jar 6、log4j-over-slf4j-1.7.21-sources.jar 7、osgi-over-slf4j-1.7.21.jar 8、osgi-over-slf4j-1.7.21-sources.jar 9、slf4j-android-1.7.21.jar 10、slf4j-android-1.7.21-...
pax-logging-log4j2 (log4J2) pax-logging-logback (logback) pax-logging-log4j1在 2.0.0 版本之前被命名为pax-logging-service 。 不同的日志 API 基本接口org.osgi.service.log.LogService从OSGi的纲要规范的第...
4. 依赖库:包括了对Apache Felix或Equinox等OSGi容器的适配器,以及一些基础库,如log4j、commons-lang等。 综上所述,Spring OSGi结合了Spring的便利性和OSGi的模块化优势,为Java企业级应用提供了一种高效、灵活...
5. **日志管理**:理解如何在OSGi环境中使用日志服务,如使用SLF4J或Log4j等库。 6. **OSGi启动与部署**:学习如何通过启动脚本来启动OSGi应用,以及如何管理应用的生命周期。 通过分析这个项目,你可以深入理解...
4. 依赖的第三方库:如`log4j`, `slf4j`等日志框架,以及可能的网络或数据库连接库。 整合Spring DM和OSGi的过程通常包括以下步骤: 1. **配置OSGi容器**:设置OSGi容器(如Equinox或Felix),并确保其正确运行。 ...
在使用SLF4J和Log4j的组合模式时,应当在项目中导入slf4j-api和slf4j-log4j12包,并在src目录下配置log4j.properties文件,确保日志系统的正确加载和配置。而当Commons Logging与SLF4J共存时,可以继续使用Commons ...
Log4j 和 Slf4j 适配器将日志写入 scribe 服务器。 项目主页: : OSGi 环境:ddth-log2scribe 模块打包为 OSGi 包。 安装 最新发布版本: 0.1.0 。 请参阅 。 Maven 依赖: < groupId>...
对于日志处理,通常推荐使用Log4j或者其他的日志框架。Spring-DM支持多种日志配置方式,可以根据项目需求进行选择。 #### 六、总结 Spring-DM是一种强大的工具,它将Spring框架的优势与OSGi的模块化能力相结合,为...
在"eclipse开发rcp4应用示例"中,我们将探讨如何使用Eclipse RCP4构建一个应用程序,同时整合log4j日志系统以及自定义的启动画面(splashscreen)。 首先,了解Eclipse RCP4的基础架构至关重要。它基于OSGi服务,...
例如,如果希望使用Log4j作为实际的日志实现,就需要在类路径中包含`log4j-over-slf4j.jar`。 **常见适配器:** - `jcl-over-slf4j.jar`:用于替换Apache Commons Logging。 - `log4j-over-slf4j.jar`:用于替换Log...
Java日志框架的发展历程中,涌现出了许多知名的组件,例如log4j、logback、log4j2以及Java内置的日志API(java.util.logging,简称JUL)。这些框架各有特点,选择哪一种通常取决于项目需求和性能考虑。 - **log4j**...