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

OSGI - Log4j配置

阅读更多
关键字: log4j slf4j
       由于OSGi每个Bundle都有自己的独立的类加载器,所以如果将Log4j的配置放到一个Bundle中,是不能被其他Bundle共享的,而且也分散了对log的管理,显然不是太好。
       比较理想的作法就是单独建立一个Log Bundle,负责处理日志问题,包括加载、关闭、配置等。由于我的项目中涉及到Jetty、Wicket、Hibernate、Spring等这些开源的项目分别使用了Jetty和Wicket使用的是slf4j,而Spring和Hibernate使用了Apache的commons-logging,所以只好使用slf4j作为通用的日志工具,使用Log4j的实现。
       因为日志管理属于全局的,所以我将一些全局的东西都打包到一个Bundle中,方便管理。这个Bundle的主要目的就是加载Log4j的配置文件,并管理其生命周期。
       首先要添加slf4j-api-1.4.2.jar和slf4j-log4j12-1.4.2.jar,用来让slf4j使用log4j的jar包,当然也不能忘了log4j自身的jar包。新建一个CoreActivator实现BundleActivator接口:

java 代码

1.package wanged.core; 
2. 
3.import java.util.Properties; 
4. 
5.import org.apache.log4j.LogManager; 
6.import org.apache.log4j.PropertyConfigurator; 
7.import org.osgi.framework.BundleActivator; 
8.import org.osgi.framework.BundleContext; 
9. 
10.public class CoreActivator implements BundleActivator { 
11. 
12.    public void start(BundleContext context) throws Exception { 
13.        Properties props = new Properties(); 
14.        props.load(CoreActivator.class.getResourceAsStream("/log4j.properties")); 
15.         
16.        PropertyConfigurator.configure(props); 
17.    } 
18. 
19.    public void stop(BundleContext context) throws Exception { 
20.        LogManager.shutdown(); 
21.    } 
22. 
23.} 

这就完成了Log4j的加载,下面来配置log4j.properties:
        log4j.category.org.springframework=INFO,C
        log4j.category.wanged=INFO,C
        log4j.category.org.apache.wicket=INFO,C
        log4j.category.org.hibernate=INFO,C

        log4j.appender.C = org.apache.log4j.ConsoleAppender
        log4j.appender.C.Target = System.out
        log4j.appender.C.layout = org.apache.log4j.PatternLayout
        log4j.appender.C.layout.ConversionPattern = %-d{HH:mm:ss} [%p] %m%n
因为这里只涉及到Log4j的初始化和清理操作,所以在MANIFEST.MF中只需要导入org.apache.log4j。
        现在配置好了,如何使用呢?在需要使用日志的Bundle中,只需要导入包org.slf4j,就可以在程序中使用,示例如下:

java 代码

1.import org.slf4j.Logger; 
2.import org.slf4j.LoggerFactory; 
3. 
4.public class TestClass{ 
5.    private static final Logger log = LoggerFactory.getLogger(TestClass.class); 
6. 
7.    public void doThings(){ 
8.        log.info("doThings()"); 
9.    } 
10.} 
      
       当然如果不喜欢使用Log4j,可以单独修改上面的Bundle,而不会影响到其他使用Log的Bundle,是不是很方便?!
分享到:
评论

相关推荐

    killbill-osgi-bundles-lib-slf4j-osgi-0.8.4.zip

    SLF4J 的 OSGi 版本允许 KillBill 的不同组件根据需要加载各自的日志实现,如 Logback 或者 Log4j,以实现模块化和可配置的日志策略。 【描述】"qunit-mojo.zip, Qunit Mojo 是一个 Maven 插件,用于快速轻松地创建...

    spring-dm-osgi整合jar包

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

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

    4. **加载Log4j配置**:在Host Bundle的启动代码中,或者通过OSGi服务,我们可以确保在启动时加载Fragment Bundle中的Log4j配置。这可能需要一些自定义代码来实现,因为OSGi默认不自动加载Fragment Bundle的资源。 ...

    osgi-ibatis

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

    eclipse log4j 插件

    - **创建Log4j配置文件**: 在项目中创建一个名为`log4j.properties`或`log4j.xml`的配置文件,定义日志级别(DEBUG, INFO, WARN, ERROR, FATAL)、输出目的地(控制台、文件、数据库等)和日志格式。 - **引入...

    考试系统源码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的纲要规范的第...

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

    ddth-log2scribe Log4j 和 Slf4j 适配器将日志写入 scribe 服务器。 项目主页: : ...Log4j 配置 log4j.appender.X=com.github.ddth.log2scribe.log4jappender.ScribelogAppender log4j.appender.X.layout=o

    spring osgi相关资源

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

    香锅之事前准备以及maven(老三卑微的愿望)

    - `log4j.osgi-1.2.15-SNAPSHOT.jar`: OSGi版本的Log4j,一个广泛使用的日志记录框架。 - `com.springsource.slf4j.api-1.5.0.jar` 和 `com.springsource.slf4j.org.apache.commons.logging-1.5.0.jar`: SLF4J...

    全面掌握JAVA日志体系.pdf

    - **log4j**:作为早期常用的日志框架,log4j提供了丰富的配置选项和灵活的日志级别控制。 - **logback**:由log4j的设计者Ceki Gülcü创建,性能上优于log4j,分为logback-core、logback-classic和logback-access...

    slf4j+logback快速上手教程

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

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

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

    Spring OSGi 入门.pdf

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

    osgi实战读书笔记

    Bundle-Classpath: /bin, /lib/log4j.jar ``` - **Bundle-ContactAddress**: 提供了开发者的联系方式,便于用户寻求支持。例如: ``` Bundle-ContactAddress: ShangHai ``` - **Bundle-Localization**: 指定了...

    eclipse开发rcp4应用示例

    在RCP4应用中集成log4j,你需要在项目中引入log4j的库,然后配置log4j.properties文件以定义日志级别、输出格式和目的地。你还可以编写代码来记录应用程序中的关键事件,帮助调试和监控程序运行状态。 自定义的...

    activemq-rar-5.3.1.rar

    5. "log4j-1.2.14.jar":日志框架Log4j,用于记录应用程序的运行日志,提供调试和故障排查信息。 6. "commons-net-2.0.jar":Apache Commons Net库,提供了网络协议,如TCP/IP,FTP,SMTP等,可能在ActiveMQ的网络...

    Activiti6.0依赖jar包依赖解决

    6. `slf4j-log4j12-1.7.9.jar`:SLF4J(简单日志门面)与 Log4j 的桥接库,用于日志记录,提供了一种灵活的日志记录解决方案。 7. `commons-lang3-3.5.jar`:Apache Commons Lang 是一个提供了大量实用工具方法的库...

    EclipseMavenSpringDM(译文)- 中文版

    - **配置Log4J**:设置Log4J的配置文件,定义日志级别、输出格式等。 - **使用日志记录API**:在代码中使用Log4J API进行日志记录操作。 综上所述,本指南全面覆盖了从开发环境搭建到项目创建、配置、测试直至最终...

    activemq-rar-5.3.2.rar

    4. `log4j-1.2.14.jar`:日志处理库,提供灵活的日志记录机制,便于调试和监控ActiveMQ的运行状态。 5. `spring-osgi-core-1.2.1.jar`:Spring对OSGi(开放服务网关协议)的支持,允许在模块化环境中部署和管理...

Global site tag (gtag.js) - Google Analytics