springdm 下log4j相关

知识前提:

一点maven知识,熟悉pom.xml的基本配置方法。

了解springDM的大致原理。


参考:

common logging 和 log4j 的关系 : http://touch.iteye.com/blog/31632

slf4j : http://imshare.iteye.com/blog/772770

springdm下解决log4j问题: http://www.blogjava.net/gordon/articles/333799.html


一、spring dm中几个log相关jar包的关系


通过查看这几个包的MENIFEST.MF文件,可以大概了解他们之间的关系。

1、 com.springsource.slf4j.org.apache.commons.logging依赖com.springsource.slf4j.api

根据参考1和参考2的说法,slf4j抽象出公共的日志接口,屏蔽了日志实现系统的细节;commons.logging优化了适应性,可以自动找到最优的日志实现。总之,两个都是日志调用的公共接口,既然commons.logging要在slf4j上面做封装,那么自然是有点用的,就用它了。

2、com.springsource.slf4j.api接受fragment形式的实现

比如想要log4j实现日志记录,那么就附着一个com.springsource.slf4j.log4j,如果想要jdk实现,那么附着一个slf4j-jdk就好了(osgi环境下这个包有没有得去找找看)。

3、com.springsource.slf4j.log4j只是作为一个实际实现的适配器,真正的实现者是com.springsource.org.apahce.log4j

也就是说,com.springsource.slf4j.log4j依赖com.springsource.org.apahce.log4j的实现,并附着到com.springsource.slf4j.api上面去。

4、log4j这个日志系统实现者,本身是不提供配置的,通常是用fragment的形式,把配置文件附着上去。下面就描述怎么编译这个fragment。


二、实现log4j配置

配置文件log4j.properties到处都有,这里贴一份拷贝过来的,看着意思改一下输出文件就可以用了,直接放到project下面:

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=D:/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

编译这个fragment的时候,有点要注意的,这里记一下pom.xml文件里面的东西

<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.5.1</version>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<version>2.4.0</version>
				<extensions>true</extensions>
				<configuration>
					<instructions>
						<Bundle-SymbolicName>logfrag</Bundle-SymbolicName>
						<Export-Package></Export-Package>
						<Bundle-Vendor>haha</Bundle-Vendor>
						<Include-Resource>log4j.properties</Include-Resource>
						<Fragment-Host>com.springsource.org.apache.log4j;bundle-version="[1.2.15,1.2.15]"</Fragment-Host>
					</instructions>
				</configuration>
			</plugin>
		</plugins>
	</build>

Fragment-Host这一项,后面填的是主Bundle的Bundle-SymbolicName,可以填bundle-version做过滤,也可以不填。

Include-Resource这一项,如果不填,maven-bundle-plugin就只会打包class文件,生成MENIFEST.MF文件,不会把log4j.properties加进去,所以要这么一个配置。


三、调用commons.logging接口记日志


import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


private static Log log = LogFactory.getLog(Activator.class);

log.error("log test OK !!!!!!!!!!!!");


四、庆祝环境搭建成功


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值