Inmy關於JMS Appenders的研究我發現turorial1和tutorial2。我試圖關注他們,但我無法運行示例程序。如何使用JMS Appender?
Fistly我創建的文件log4j.properties
log4j.rootLogger=INFO, 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.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
和jndi.properties
topic.logTopic=logTopic
然後我說Receiver.java到我的項目
public class Receiver implements MessageListener {
public Receiver() throws Exception {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection conn = factory.createConnection();
Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
conn.start();
MessageConsumer consumer = sess.createConsumer(sess.createTopic("logTopic"));
consumer.setMessageListener(this);
Logger log = Logger.getLogger(Receiver.class);
log.info("Test log");
Thread.sleep(1000);
consumer.close();
sess.close();
conn.close();
System.exit(1);
}
public static void main(String[] args) throws Exception {
new Receiver();
}
@Override
public void onMessage(Message message) {
try {
// receive log event in your consumer
LoggingEvent event = (LoggingEvent)((ActiveMQObjectMessage)message).getObject();
System.out.println("Received log [" + event.getLevel() + "]: "+ event.getMessage());
} catch (Exception e) {
e.printStackTrace();
}
}
}
我需要做接收器收集項目中的所有日誌,但我甚至無法運行這個簡單的例子。也許我不知道如何正確地配置它,因爲我得到這個輸出:
log4j:WARN No appenders could be found for logger (org.apache.activemq.transport.WireFormatNegotiator).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
我錯過了在添加一些代碼行或某些文件類路徑?我是log4j的新手。
編輯: 我在AspectJ
類設置記錄器。但我認爲在Receiver
中也會創建日誌併發送日誌,因此可能應該在Receiver
中完成,而不是在我的項目中的其他類中。
static final Logger logger = Logger.getLogger(ReportingAspect.class);
@Before("setLoggingFile()")
public void setProperties() {
PropertyConfigurator.configure("log4j.properties");
}
ProjectJMS
|
\_ src
| \_ packages...
\_jndi.propeties
\_log4j.properties
WARN只是說你沒有正確設置log4j。這不是代碼不起作用的原因。 – CoolBeans 2012-08-06 14:39:38
@CoolBeans正如我所說,它可能沒有配置,所以你是對的。我的問題是:如何配置它。不在源代碼中?在哪裏/怎麼樣?你能幫忙嗎? – alicjasalamon 2012-08-06 14:41:41
請將您初始化記錄器的代碼以及您將屬性文件放在哪裏? – Tomer 2012-08-06 14:43:36