2017-01-17 17 views
0

Я пытаюсь сделать POC, используя log4j JMSappender и ActiveMQ. Я успешно следую этому примеру ->http://activemq.apache.org/how-do-i-use-log4j-jms-appender-with-activemq.htmlИспользование log4j JMSAppender с ActiveMQ - тайм-аут проводного формата на уровне отладки (на стороне клиента)

Но это для уровня INFO. Я сделал некоторые изменения, чтобы использовать его на уровне DEBUG, и моя программа и activeMQ не могут обменять их формат проводов. Вот мой log4j (клиентская сторона)

log4j.rootLogger=DEBUG, stdout, jms 
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 
log4j.appender.stdout.Threshold=INFO 

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 
log4j.appender.jms.Threshold=DEBUG 

При запуске моего клиента у меня есть ошибка формата провода.

программа Производитель:

import org.apache.log4j.Logger; 

public class ProducerDebug { 

public static void main(String[] args) throws InterruptedException 
{ 
    new ProducerDebug(); 
} 

private ProducerDebug() throws InterruptedException { 
    Logger logger = Logger.getLogger(ProducerInfo.class); 

    while (true) 
    { 
     logger.debug("push DEBUG"); 
     logger.info("push INFO2"); 
     Thread.sleep(10000); 
    } 
} 
} 

И сообщение об ошибке:

log4j: ERROR Ошибка при активации опции для Appender имени [JMS]. javax.jms.JMSException: Время ожидания согласования формата провода: peer не отправьте его формат проводов. на org.apache.activemq.util.JMSExceptionSupport.create (JMSExceptionSupport.java:72) на org.apache.activemq.ActiveMQConnection.syncSendPacket (ActiveMQConnection.java:1412) на org.apache.activemq.ActiveMQConnection. ensureConnectionInfoSent (ActiveMQConnection.java:1501) на org.apache.activemq.ActiveMQConnection.createSession (ActiveMQConnection.java:323) на org.apache.activemq.ActiveMQConnection.createTopicSession (ActiveMQConnection.java:1134) в орг .apache.log4j.net.JMSAppender.activateOptions (JMSAppender.java:218) по адресу org.apache.log4j.config.PropertySetter.activate (PropertySetter. Java: 307) на org.apache.log4j.config.PropertySetter.setProperties (PropertySetter.java:172) на org.apache.log4j.config.PropertySetter.setProperties (PropertySetter.java:104) в орг .apache.log4j.PropertyConfigurator.parseAppender (PropertyConfigurator.java:842) на org.apache.log4j.PropertyConfigurator.parseCategory (PropertyConfigurator.java:768) на org.apache.log4j.PropertyConfigurator.configureRootCategory (PropertyConfigurator.java : 648) по адресу org.apache.log4j.PropertyConfigurator.doConfigure (PropertyConfigurator.java:514) по адресу org.apache.log4j.PropertyCo nfigurator.doConfigure (PropertyConfigurator.java:580) на org.apache.log4j.helpers.OptionConverter.selectAndConfigure (OptionConverter.java:526) на org.apache.log4j.LogManager. (LogManager.java:127) при org.apache.log4j.Logger.getLogger (Logger.java:117) в awg.adb.producer.ProducerDebug. (ProducerDebug.java:13) в awg.adb.producer.ProducerDebug.main (ProducerDebug.java:9) Вызвано: java.io.IOException: Время ожидания согласования формата провода: peer не отправить его формат проводов. на org.apache.activemq.transport.WireFormatNegotiator.oneway (WireFormatNegotiator.java:98) на org.apache.activemq.transport.MutexTransport.oneway (MutexTransport.java:68) на org.apache.activemq. transport.ResponseCorrelator.asyncRequest (ResponseCorrelator.java:81) по адресу org.apache.activemq.transport.ResponseCorrelator.request (ResponseCorrelator.Java: 86) на org.apache.activemq.ActiveMQConnection.syncSendPacket (ActiveMQConnection.java:1387) ... подробнее 17

Я пробовал много вещей, и я не могу понять, почему у меня есть эта ошибка.

Информацию: Я использую - ActiveMQ 5.12.1 - Log4j 1.2.17

ответ

0

да это из-за бревен Amq, если уровень отладки, одно решение делать противоположное тому, как это :

log4j.rootLogger=INFO, stdout 

## Be sure that ActiveMQ messages are not logged to 'jms' appender 
log4j.logger.org.apache=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 
log4j.appender.jms.Threshold=DEBUG 
log4j.logger.your.package=jms 
+0

Благодаря Hassen. Я попробовал ваш пример, изменив «log4j.logger.your.package = jms» на «log4j.logger.your.package = DEBUG, jms», и он работает. – ellirar