Spring and Logback

IoC, or DI definitely takes a perspective turnaround inside your head, but you get around it slowly.  I was playing around ways to integrate LogBack, and Spring – essentially around having Spring give me a pre-created instance of LogBack logger.

I searched around posts, but most people seem to be against using Spring just for substituting one-line of Logback (Logger log = LoggerFactory.getLogger("LogbackTest");) to get your logger.

I, on the other hand, was more interested in how to get Spring give me a LogBack logger instance without too much contrived hand-written code to achieve so. And with a bit of reading through Spring principles, documentation I found the way.

Essentially, when using Logback’s LoggerFactory you have access to only a single getLogger() factory method. This is static which makes things a bit different for what Spring would call a bean – a class providing constructor, getter, setter methods. To circumvent this non-bean style, Spring provides what you call as static initializers a.k.a substitutes for constructors, which allow you to call a static method in lieu of calling a constructor on an object.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
 "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
 <bean id="bean1" class="org.slf4j.LoggerFactory" factory-method="getLogger">
 <constructor-arg value="LogbackTest" />
 </bean>
</beans>

Now, this bean1 can be used as a regular bean inside your class

ApplicationContext ctx = new FileSystemXmlApplicationContext("logbacktest.xml");
 Logger log = (Logger) ctx.getBean("bean1");

 log.debug("This is my first message");
 log.info("How about this information message");

Throw in a logback.xml in your classpath, and viola you have a nice Spring injected dependency – log in your code, while still using Logback!

Comments

3 responses to “Spring and Logback”

  1. It’s really a nice and helpful piece of information. I’m glad that you shared this helpful info with us. Please keep us informed like this. Thanks for sharing.

  2. Great work keep it coming

  3. I adore your wordpress web template, wherever do you get a hold of it from?

Leave a Reply

Your email address will not be published. Required fields are marked *

five × 2 =