Separate Log Files Per Bundle
eric.bender Mar 6, 2012 11:36 AMHello all,
As more developer start working within the servicemix framework, I am trying to setup so that each deployed application bundle writes to it's own log file.
I tried what is listed at http://fusenotes.blogspot.com/2011/02/logging-per-application-in-servicemix-4.html and that seems to make the system write to different log files based on the bundle, but in our routes the use of the log EIP still writes to the servicemix.log.
What is the best method to have a custom bundle write to it's own log file?
My etc/org.ops4j.pax.logging.cfg looks like this
# Root logger log4j.rootLogger = INFO, out, sift, osgi:VmLogAppender log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer log4j.appender.sift.key=app.name log4j.appender.sift.appender.file=${karaf.data}/log/$\\{app.name\\}.log # CONSOLE appender not used by default log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n # File appender log4j.appender.out=org.apache.log4j.RollingFileAppender log4j.appender.out.layout=org.apache.log4j.PatternLayout log4j.appender.out.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n log4j.appender.out.file=${karaf.data}/log/servicemix.log log4j.appender.out.append=true log4j.appender.out.maxFileSize=100MB log4j.appender.out.maxBackupIndex=10 # Sift appender log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender log4j.appender.sift.key=bundle.name log4j.appender.sift.default=servicemix log4j.appender.sift.appender=org.apache.log4j.FileAppender log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout log4j.appender.sift.appender.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %m%n log4j.appender.sift.appender.file=${karaf.data}/log/$\\{bundle.name\\}.log log4j.appender.sift.appender.append=true log4j.logger.org.apache.camel = INFO
and I am using a simple spring method invoc in my beans.xml
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetClass"> <value>org.slf4j.MDC</value> </property> <property name="targetMethod"> <value>put</value> </property> <property name="arguments"> <list> <value>app.name</value> <value>MDM-RealTime</value> </list> </property> </bean>