Search
Calendar
September 2011
S M T W T F S
« Aug   Oct »
 123
45678910
11121314151617
18192021222324
252627282930  
Archives

Archive for September 18th, 2011

PostHeaderIcon How to attach a single class to a Log4J appender?

The issue looks simple, but I needed a little search.

Case

I have a log4j config file, with three appenders: INFO, console and trace. I have to add a brand new appender (let’s say: JonathanNewAppender) that will log the events of only one class (let’s say: JonathanComponent). How to configure Log4J to perform that?

Solution

Edit the log4j.properties file.
Do not change the property log4j.rootCategory, do not mention JonathanNewAppender.

log4j.rootCategory=INFO, console, trace

Add the properties of the appender, for instance: Donner les proprietes de l’appender:

log4j.appender.JonathanNewAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.JonathanNewAppender.Append=true
log4j.appender.JonathanNewAppender.File=logs/prsl-sent-and-received.csv
log4j.appender.JonathanNewAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.JonathanNewAppender.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss}%m%n
log4j.appender.JonathanNewAppender.threshold=INFO

And here is the trick: add the log level and the actual appender for the new class.

log4j.logger.my.package.name.JonathanComponent=INFO, JonathanNewAppender

Indeed, the only field of a logger to be mandatory is the log level. When the appender is specified, it will be taked in account. Otherwise, the logger will be attached all the appenders available in log4j.rootCategory property.