【发布时间】:2015-07-04 18:30:39
【问题描述】:
我正在努力编写一个将消息记录到队列的简单 POC 程序。我发现的所有教程和问答(here 和here)都使用 log4j 1.2 版,它们将消息放入主题而不是队列。我的要求是登录到队列。
我遵循了official site 中提到的文档,但无法使其正常工作。
我的类路径上有 log4j2 和 ActiveMQ JAR,我创建了队列“logQueue”,我能够在 ActiveMQ Web 控制台中看到队列,当我尝试执行程序来写入日志时,我得到以下信息错误:
ERROR Error creating JmsManager using ConnectionFactory [ConnectionFactory] and Destination [logQueue]. javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
它显然看起来像一些 JNDI 问题,但我无法弄清楚是什么。根据 log4j 1.2 教程,我还将 jndi.properties 文件添加到我的类路径中,其值为
queue.logQueue=logQueue
但这显然没有帮助。下面是我的 log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<JMS name="jmsQueue" destinationBindingName="logQueue"
factoryBindingName="ConnectionFactory"
providerURL="tcp://localhost:61616"/>
</Appenders>
<Loggers>
<Root level="all">
<AppenderRef ref="jmsQueue"/>
</Root>
</Loggers>
</Configuration>
谢谢!
【问题讨论】:
标签: java jms activemq jndi log4j2