Google Analytics

martes, 27 de octubre de 2009

Log4j - JMS Appender con ActiveMQ

Como todos sabemos (y si no es así lo sabemos ahora), log4j permite usar topics JMS como destino de la información de log, en mi caso estoy acostumbrado a usar ActiveMQ como implementación de JMS por lo que será la que utilice para explicar el proceso, aunque se puede inferir el proceso para otras implementaciones de JMS como JBoss o WebLogic que son de las más utilizadas en la documentación que he visto.

Para utilizar ActiveMQ como destino de tus mensajes de log, necesitas configurar el appender JMS adecuadamente. El código de ejemplo (obtenido de la página oficial de ActiveMQ) para lograr esto es el siguiente:


log4j.rootLogger=INFO, stdout, jms

## Be sure that ActiveMQ messages are not logged to 'jms' appender
log4j.logger.org.apache.activemq=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %-5p %c - %m%n

## Configure 'jms' appender. You'll also need
## jndi.properties file in order to make it work
log4j.appender.jms=org.apache.log4j.net.JMSAppender
log4j.appender.jms.InitialContextFactoryName=
    org.apache.activemq.jndi.ActiveMQInitialContextFactory
log4j.appender.jms.ProviderURL=tcp://localhost:61616
log4j.appender.jms.TopicBindingName=logTopic
log4j.appender.jms.TopicConnectionFactoryBindingName=ConnectionFactory

Es importante tener en cuenta que no se esté logeando información de ActimeMQ con el JMSAppender, porque en otro caso nos arriesgamos a que se envíen mensajes sin que el sistema de colas esté arrancado. Para ello pasamos el log de ActiveMQ a otro appender diferente (en el ejemplo se puede observar como está asociado a la salida stdout).

Para que los recursos de ActiveMQ estén disponibles para Log4j tenemos que configurarlo mediante JNDI en un fichero jndi.properties de nuestra aplicación. Se puede partir del siguiente ejemplo (observar que en la página de ActiveMQ refieren un fichero de propiedades distinto, a mi no me funcionó, por lo que copio el que me funcionó a mi).


java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory

# use the following property to configure the default connector
java.naming.provider.url = vm://localhost

# register some queues in JNDI using the form
# queue.[jndiName] = [physicalName]
topic.logTopic = logTopic

Con estos pocos pasos hemos terminado, y ya tenemos configurado Log4j para que redireccione los mensajes de logging a colas JMS usando ActiveMQ como implementación de JMS.

4 comentarios:

Gregorio Mena Rodríguez dijo...

Acabo de llegar al blog por casualidad, gracias a Google Reader, y a él va derechito para poder estar al día porque seguro que va a estar sobrado de calidad.
También pondré una referencia en el mío, para que tenga algo muy bueno, aunque sea referenciado ;)

Un abrazo.
Gregorio.

Yeray Darias Camacho dijo...

Bueno Gregorio creo que sobreestimas un poco :) pero lo haré lo mejor que pueda para no defraudar.

Saludos.
Yeray.

Anónimo dijo...

In today’s rocky economic climate, most households are cutting back wherever they can. I too faced the problem and wated to cut down on
cable tv, I tried P2P, but then not impressed with it. I started collecting ways to watch my favorite tv shows online.
I have listed then in my blogspot, I try to cover as many tv shows and matches as possible, to help others like
me to watch their favorite sports or tv shows online for free.

But my list is not complete, I don't know where to find some international shows, for sports you have numerous resources, Can someone here help me with that?
Please tell me you favorite shows that you watch regularly and also some ideas to cover them. If you need to know the shows that I cover, then visit my blogs

[url=http://tvshows-watch-online-blogspot.com]Watch Online TV Shows for Free[/url]
[url=http://tv-shows-watch-online-blogspot.com]Watch Online Sports for Free[/url]

Anónimo dijo...

This might be a bit off-topic but I believe there are a lot of smokers here on www.blogger.com. I decided to find a good vendor of electronic cigarettes. I'm done with paying so much for normal cigarettes.A friend recommended [url=http://www.insanereleases.info/greensmokef.html]G Smoke[/url] According to their website this is how they described their product:
"Green Smoke offers quality Electronic cigarettes with disposable cartridges that compose of the highest smoke volume in the industry. With a variety of flavors and nicotine levels, Green Smoke's™ patented product offers convenience and exhibit performance that is unmatched. G Smoke products have been independently tested for safety."
I'm thinking of buying them. Anyone else have experience with this e-cigarette?