`
OuYangGod
  • 浏览: 54202 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

OSGi中使用log4j

阅读更多
最近在看关于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!
0
0
分享到:
评论
4 楼 zxjlwt 2015-04-02  
学习了。不知道大侠有没有用过karaf。

http://surenpi.com
3 楼 whbah 2013-09-02  
whbah 写道
我用的是felix容器,在windows下测试可以

是在Console下测试可以
2 楼 whbah 2013-09-02  
我用的是felix容器,在windows下测试可以
1 楼 whbah 2013-09-02  
请问 在web项目中,要怎么配置log4j的使用?
这个配置在web中,测试后不能用

相关推荐

    log4j-2.17升级版本包

    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

    eclipse log4j 插件

    在Java开发中,日志管理是不可或缺的一部分,Log4j作为一款广泛使用的日志记录框架,为开发者提供了强大的日志处理能力。Eclipse IDE,作为Java开发的主流工具,也支持通过插件的形式集成Log4j,以便在开发过程中更...

    SpringDM笔记6-Fragment及配置Log4j Fragment Bundle

    在本文中,我们将深入探讨Spring DM(现在称为Spring OSGi)中的Fragment Bundle以及如何配置Log4j在Fragment Bundle中的应用。Spring DM是Spring框架在OSGi(Open Service Gateway Initiative)环境下的扩展,它...

    slf4j-1.7.21所有相关jar包

    该压缩包中包含以下内容: 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-...

    最新slf4j-1.7.25.zip源码和jar包

    该压缩包中包含以下内容: 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

    【标题】"killbill-osgi-bundles-lib-slf4j-osgi-0.8.4.zip" 是一个基于OSGi的 Kill Bill 库,其中包含了SLF4J(Simple Logging Facade for Java)的OSGi兼容版本。SLF4J是一个为各种日志框架提供简单抽象的接口,...

    最新slf4j-1.7.21.zip源码和jar包

    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-...

    考试系统源码java-org.ops4j.pax.logging:OSGi日志框架实现。支持SLF4J、LOG4J、JCL等

    pax-logging-log4j2 (log4J2) pax-logging-logback (logback) pax-logging-log4j1在 2.0.0 版本之前被命名为pax-logging-service 。 不同的日志 API 基本接口org.osgi.service.log.LogService从OSGi的纲要规范的第...

    spring osgi相关资源

    4. 依赖库:包括了对Apache Felix或Equinox等OSGi容器的适配器,以及一些基础库,如log4j、commons-lang等。 综上所述,Spring OSGi结合了Spring的便利性和OSGi的模块化优势,为Java企业级应用提供了一种高效、灵活...

    osgi-ibatis

    5. **日志管理**:理解如何在OSGi环境中使用日志服务,如使用SLF4J或Log4j等库。 6. **OSGi启动与部署**:学习如何通过启动脚本来启动OSGi应用,以及如何管理应用的生命周期。 通过分析这个项目,你可以深入理解...

    spring-dm-osgi整合jar包

    4. 依赖的第三方库:如`log4j`, `slf4j`等日志框架,以及可能的网络或数据库连接库。 整合Spring DM和OSGi的过程通常包括以下步骤: 1. **配置OSGi容器**:设置OSGi容器(如Equinox或Felix),并确保其正确运行。 ...

    JAVA项目之日志(log)设置.pdf

    在使用SLF4J和Log4j的组合模式时,应当在项目中导入slf4j-api和slf4j-log4j12包,并在src目录下配置log4j.properties文件,确保日志系统的正确加载和配置。而当Commons Logging与SLF4J共存时,可以继续使用Commons ...

    ddth-log2scribe:Log4j & Slf4j 适配器将日志写入 scribe 服务器

    Log4j 和 Slf4j 适配器将日志写入 scribe 服务器。 项目主页: : OSGi 环境:ddth-log2scribe 模块打包为 OSGi 包。 安装 最新发布版本: 0.1.0 。 请参阅 。 Maven 依赖: < groupId>...

    Spring OSGi 入门.pdf

    对于日志处理,通常推荐使用Log4j或者其他的日志框架。Spring-DM支持多种日志配置方式,可以根据项目需求进行选择。 #### 六、总结 Spring-DM是一种强大的工具,它将Spring框架的优势与OSGi的模块化能力相结合,为...

    eclipse开发rcp4应用示例

    在"eclipse开发rcp4应用示例"中,我们将探讨如何使用Eclipse RCP4构建一个应用程序,同时整合log4j日志系统以及自定义的启动画面(splashscreen)。 首先,了解Eclipse RCP4的基础架构至关重要。它基于OSGi服务,...

    slf4j+logback快速上手教程

    例如,如果希望使用Log4j作为实际的日志实现,就需要在类路径中包含`log4j-over-slf4j.jar`。 **常见适配器:** - `jcl-over-slf4j.jar`:用于替换Apache Commons Logging。 - `log4j-over-slf4j.jar`:用于替换Log...

    全面掌握JAVA日志体系.pdf

    Java日志框架的发展历程中,涌现出了许多知名的组件,例如log4j、logback、log4j2以及Java内置的日志API(java.util.logging,简称JUL)。这些框架各有特点,选择哪一种通常取决于项目需求和性能考虑。 - **log4j**...

Global site tag (gtag.js) - Google Analytics