SLF4J-bridge

桥接器:用于将第三方库中的日志系统由JCL,log4j和JUL重定向到slf4j中,以便日志的统一管理。

实例:将spring的日志由JCL重定向到slf4j

1)spring配置JCL+log4j

-pom.xml

	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>3.2.13.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>
	</dependencies>

-log4j.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                value="[%d{yyyy-MM-dd HH:mm:ss,SSS\} %-5p] [%t] %c{2\} - %m%n" />       
        </layout>
    </appender>
    
    <root>
        <priority value="INFO"/>
        <appender-ref ref="console"/>
    </root>
    
</log4j:configuration>

-ApplicationContext-Bean.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd">

	<bean id="person" class="com.siyuan.test.slf4j.entity.Person">
		<property name="name" value="siyuan"/>
	</bean>
	         
</beans>

-Person.java

package com.siyuan.test.slf4j.entity;

public class Person {
	
	private String name;

	public Person() {
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}

-BridgeTest.java

package com.siyuan.test.slf4j.bridge;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.siyuan.test.slf4j.entity.Person;

public class BridgeTest {

	public static void main(String[] args) {
		ApplicationContext ctxt = new ClassPathXmlApplicationContext("ApplicationContext-Bean.xml");
		System.out.println(ctxt.getBean("person"));
		System.out.println(((Person) ctxt.getBean("person")).getName());
	}

}

-运行结果

[2015-06-03 00:01:40,221 INFO ] [main] support.ClassPathXmlApplicationContext - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@19c247a0: startup date [Wed Jun 03 00:01:40 CST 2015]; root of context hierarchy
[2015-06-03 00:01:40,272 INFO ] [main] xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [ApplicationContext-Bean.xml]
[2015-06-03 00:01:40,397 INFO ] [main] support.DefaultListableBeanFactory - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@420f9c40: defining beans [person]; root of factory hierarchy
com.siyuan.test.slf4j.entity.Person@276a38b5
siyuan

2)重定向到slf4j

-去除JCL+log4j,加入桥接器+logback

pom.xml

<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>3.2.13.RELEASE</version>
			<exclusions>
				<exclusion>
					<artifactId>commons-logging</artifactId>
					<groupId>commons-logging</groupId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
			<version>1.7.12</version>
		</dependency>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<version>1.1.3</version>
		</dependency>
	</dependencies>

logback-test.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
		</encoder>
	</appender>

	<root level="debug">
		<appender-ref ref="STDOUT" />
	</root>
	
</configuration>

BridgeTest运行结果

2015-06-03 00:07:14,556 DEBUG [main] o.s.c.e.StandardEnvironment [MutablePropertySources.java:108] Adding [systemProperties] PropertySource with lowest search precedence
2015-06-03 00:07:14,563 DEBUG [main] o.s.c.e.StandardEnvironment [MutablePropertySources.java:108] Adding [systemEnvironment] PropertySource with lowest search precedence
2015-06-03 00:07:14,564 DEBUG [main] o.s.c.e.StandardEnvironment [AbstractEnvironment.java:126] Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment]
2015-06-03 00:07:14,568 INFO [main] o.s.c.s.ClassPathXmlApplicationContext [AbstractApplicationContext.java:512] Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@b6e39f: startup date [Wed Jun 03 00:07:14 CST 2015]; root of context hierarchy
2015-06-03 00:07:14,606 DEBUG [main] o.s.c.e.StandardEnvironment [MutablePropertySources.java:108] Adding [systemProperties] PropertySource with lowest search precedence
2015-06-03 00:07:14,607 DEBUG [main] o.s.c.e.StandardEnvironment [MutablePropertySources.java:108] Adding [systemEnvironment] PropertySource with lowest search precedence
2015-06-03 00:07:14,607 DEBUG [main] o.s.c.e.StandardEnvironment [AbstractEnvironment.java:126] Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment]
2015-06-03 00:07:14,617 INFO [main] o.s.b.f.x.XmlBeanDefinitionReader [XmlBeanDefinitionReader.java:316] Loading XML bean definitions from class path resource [ApplicationContext-Bean.xml]
2015-06-03 00:07:14,620 DEBUG [main] o.s.b.f.x.DefaultDocumentLoader [DefaultDocumentLoader.java:72] Using JAXP provider [com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl]
2015-06-03 00:07:14,644 DEBUG [main] o.s.b.f.x.PluggableSchemaResolver [PluggableSchemaResolver.java:140] Loading schema mappings from [META-INF/spring.schemas]
2015-06-03 00:07:14,648 DEBUG [main] o.s.b.f.x.PluggableSchemaResolver [PluggableSchemaResolver.java:146] Loaded schema mappings: {http://www.springframework.org/schema/util/spring-util.xsd=org/springframework/beans/factory/xml/spring-util-3.2.xsd, http://www.springframework.org/schema/jee/spring-jee-3.2.xsd=org/springframework/ejb/config/spring-jee-3.2.xsd, http://www.springframework.org/schema/beans/spring-beans-3.1.xsd=org/springframework/beans/factory/xml/spring-beans-3.1.xsd, http://www.springframework.org/schema/task/spring-task.xsd=org/springframework/scheduling/config/spring-task-3.2.xsd, http://www.springframework.org/schema/cache/spring-cache.xsd=org/springframework/cache/config/spring-cache-3.2.xsd, http://www.springframework.org/schema/aop/spring-aop-3.0.xsd=org/springframework/aop/config/spring-aop-3.0.xsd, http://www.springframework.org/schema/task/spring-task-3.1.xsd=org/springframework/scheduling/config/spring-task-3.1.xsd, http://www.springframework.org/schema/aop/spring-aop-2.0.xsd=org/springframework/aop/config/spring-aop-2.0.xsd, http://www.springframework.org/schema/tool/spring-tool-2.5.xsd=org/springframework/beans/factory/xml/spring-tool-2.5.xsd, http://www.springframework.org/schema/beans/spring-beans.xsd=org/springframework/beans/factory/xml/spring-beans-3.2.xsd, http://www.springframework.org/schema/jee/spring-jee-2.5.xsd=org/springframework/ejb/config/spring-jee-2.5.xsd, http://www.springframework.org/schema/tool/spring-tool-3.1.xsd=org/springframework/beans/factory/xml/spring-tool-3.1.xsd, http://www.springframework.org/schema/jee/spring-jee-3.1.xsd=org/springframework/ejb/config/spring-jee-3.1.xsd, http://www.springframework.org/schema/aop/spring-aop.xsd=org/springframework/aop/config/spring-aop-3.2.xsd, http://www.springframework.org/schema/context/spring-context-3.2.xsd=org/springframework/context/config/spring-context-3.2.xsd, http://www.springframework.org/schema/util/spring-util-3.2.xsd=org/springframework/beans/factory/xml/spring-util-3.2.xsd, http://www.springframework.org/schema/beans/spring-beans-2.0.xsd=org/springframework/beans/factory/xml/spring-beans-2.0.xsd, http://www.springframework.org/schema/lang/spring-lang-3.2.xsd=org/springframework/scripting/config/spring-lang-3.2.xsd, http://www.springframework.org/schema/beans/spring-beans-3.0.xsd=org/springframework/beans/factory/xml/spring-beans-3.0.xsd, http://www.springframework.org/schema/cache/spring-cache-3.2.xsd=org/springframework/cache/config/spring-cache-3.2.xsd, http://www.springframework.org/schema/task/spring-task-3.0.xsd=org/springframework/scheduling/config/spring-task-3.0.xsd, http://www.springframework.org/schema/context/spring-context-2.5.xsd=org/springframework/context/config/spring-context-2.5.xsd, http://www.springframework.org/schema/tool/spring-tool-3.0.xsd=org/springframework/beans/factory/xml/spring-tool-3.0.xsd, http://www.springframework.org/schema/util/spring-util-2.5.xsd=org/springframework/beans/factory/xml/spring-util-2.5.xsd, http://www.springframework.org/schema/tool/spring-tool-2.0.xsd=org/springframework/beans/factory/xml/spring-tool-2.0.xsd, http://www.springframework.org/schema/lang/spring-lang.xsd=org/springframework/scripting/config/spring-lang-3.2.xsd, http://www.springframework.org/schema/lang/spring-lang-2.5.xsd=org/springframework/scripting/config/spring-lang-2.5.xsd, http://www.springframework.org/schema/aop/spring-aop-3.2.xsd=org/springframework/aop/config/spring-aop-3.2.xsd, http://www.springframework.org/schema/jee/spring-jee-3.0.xsd=org/springframework/ejb/config/spring-jee-3.0.xsd, http://www.springframework.org/schema/jee/spring-jee-2.0.xsd=org/springframework/ejb/config/spring-jee-2.0.xsd, http://www.springframework.org/schema/context/spring-context-3.1.xsd=org/springframework/context/config/spring-context-3.1.xsd, http://www.springframework.org/schema/util/spring-util-3.1.xsd=org/springframework/beans/factory/xml/spring-util-3.1.xsd, http://www.springframework.org/schema/lang/spring-lang-3.1.xsd=org/springframework/scripting/config/spring-lang-3.1.xsd, http://www.springframework.org/schema/cache/spring-cache-3.1.xsd=org/springframework/cache/config/spring-cache-3.1.xsd, http://www.springframework.org/schema/context/spring-context.xsd=org/springframework/context/config/spring-context-3.2.xsd, http://www.springframework.org/schema/jee/spring-jee.xsd=org/springframework/ejb/config/spring-jee-3.2.xsd, http://www.springframework.org/schema/aop/spring-aop-2.5.xsd=org/springframework/aop/config/spring-aop-2.5.xsd, http://www.springframework.org/schema/beans/spring-beans-3.2.xsd=org/springframework/beans/factory/xml/spring-beans-3.2.xsd, http://www.springframework.org/schema/aop/spring-aop-3.1.xsd=org/springframework/aop/config/spring-aop-3.1.xsd, http://www.springframework.org/schema/task/spring-task-3.2.xsd=org/springframework/scheduling/config/spring-task-3.2.xsd, http://www.springframework.org/schema/context/spring-context-3.0.xsd=org/springframework/context/config/spring-context-3.0.xsd, http://www.springframework.org/schema/tool/spring-tool.xsd=org/springframework/beans/factory/xml/spring-tool-3.2.xsd, http://www.springframework.org/schema/util/spring-util-3.0.xsd=org/springframework/beans/factory/xml/spring-util-3.0.xsd, http://www.springframework.org/schema/util/spring-util-2.0.xsd=org/springframework/beans/factory/xml/spring-util-2.0.xsd, http://www.springframework.org/schema/lang/spring-lang-3.0.xsd=org/springframework/scripting/config/spring-lang-3.0.xsd, http://www.springframework.org/schema/lang/spring-lang-2.0.xsd=org/springframework/scripting/config/spring-lang-2.0.xsd, http://www.springframework.org/schema/tool/spring-tool-3.2.xsd=org/springframework/beans/factory/xml/spring-tool-3.2.xsd, http://www.springframework.org/schema/beans/spring-beans-2.5.xsd=org/springframework/beans/factory/xml/spring-beans-2.5.xsd}
2015-06-03 00:07:14,650 DEBUG [main] o.s.b.f.x.PluggableSchemaResolver [PluggableSchemaResolver.java:118] Found XML schema [http://www.springframework.org/schema/beans/spring-beans.xsd] in classpath: org/springframework/beans/factory/xml/spring-beans-3.2.xsd
2015-06-03 00:07:14,719 DEBUG [main] o.s.b.f.x.DefaultBeanDefinitionDocumentReader [DefaultBeanDefinitionDocumentReader.java:99] Loading bean definitions
2015-06-03 00:07:14,739 DEBUG [main] o.s.b.f.x.XmlBeanDefinitionReader [AbstractBeanDefinitionReader.java:216] Loaded 1 bean definitions from location pattern [ApplicationContext-Bean.xml]
2015-06-03 00:07:14,739 DEBUG [main] o.s.c.s.ClassPathXmlApplicationContext [AbstractApplicationContext.java:542] Bean factory for org.springframework.context.support.ClassPathXmlApplicationContext@b6e39f: org.springframework.beans.factory.support.DefaultListableBeanFactory@67eb366: defining beans [person]; root of factory hierarchy
2015-06-03 00:07:14,756 DEBUG [main] o.s.c.s.ClassPathXmlApplicationContext [AbstractApplicationContext.java:809] Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@2c09505f]
2015-06-03 00:07:14,760 DEBUG [main] o.s.c.s.ClassPathXmlApplicationContext [AbstractApplicationContext.java:833] Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [org.springframework.context.event.SimpleApplicationEventMulticaster@205ddb6e]
2015-06-03 00:07:14,761 INFO [main] o.s.b.f.s.DefaultListableBeanFactory [DefaultListableBeanFactory.java:603] Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@67eb366: defining beans [person]; root of factory hierarchy
2015-06-03 00:07:14,762 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory [DefaultSingletonBeanRegistry.java:215] Creating shared instance of singleton bean 'person'
2015-06-03 00:07:14,762 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory [AbstractAutowireCapableBeanFactory.java:432] Creating instance of bean 'person'
2015-06-03 00:07:14,781 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory [AbstractAutowireCapableBeanFactory.java:506] Eagerly caching bean 'person' to allow for resolving potential circular references
2015-06-03 00:07:14,816 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory [AbstractAutowireCapableBeanFactory.java:460] Finished creating instance of bean 'person'
2015-06-03 00:07:14,817 DEBUG [main] o.s.c.s.ClassPathXmlApplicationContext [AbstractApplicationContext.java:860] Unable to locate LifecycleProcessor with name 'lifecycleProcessor': using default [org.springframework.context.support.DefaultLifecycleProcessor@3801318b]
2015-06-03 00:07:14,817 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory [AbstractBeanFactory.java:243] Returning cached instance of singleton bean 'lifecycleProcessor'
2015-06-03 00:07:14,821 DEBUG [main] o.s.c.e.PropertySourcesPropertyResolver [PropertySourcesPropertyResolver.java:81] Searching for key 'spring.liveBeansView.mbeanDomain' in [systemProperties]
2015-06-03 00:07:14,821 DEBUG [main] o.s.c.e.PropertySourcesPropertyResolver [PropertySourcesPropertyResolver.java:81] Searching for key 'spring.liveBeansView.mbeanDomain' in [systemEnvironment]
2015-06-03 00:07:14,822 DEBUG [main] o.s.c.e.PropertySourcesPropertyResolver [PropertySourcesPropertyResolver.java:103] Could not find key 'spring.liveBeansView.mbeanDomain' in any property source. Returning [null]
2015-06-03 00:07:14,822 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory [AbstractBeanFactory.java:243] Returning cached instance of singleton bean 'person'
com.siyuan.test.slf4j.entity.Person@26d66426
2015-06-03 00:07:14,822 DEBUG [main] o.s.b.f.s.DefaultListableBeanFactory [AbstractBeanFactory.java:243] Returning cached instance of singleton bean 'person'
siyuan

log4j和JUL的重定向也类似

 

参考资料

http://www.slf4j.org/legacy.html   

   

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值