/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.activemq.util; import java.io.IOException; import java.util.Properties; import javax.jms.Connection; import javax.jms.JMSException; import javax.jms.MessageConsumer; import javax.jms.Session; import javax.jms.TextMessage; import junit.framework.TestCase; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.broker.BrokerService; import org.apache.activemq.command.ActiveMQTopic; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class JmsLogAppenderTest extends TestCase { protected BrokerService broker; public void testLoggingWithJMS() throws IOException, JMSException { // Setup the consumers MessageConsumer info; MessageConsumer debug; MessageConsumer warn; ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false&broker.useJmx=false"); Connection conn = factory.createConnection(); conn.start(); warn = conn.createSession(false, Session.AUTO_ACKNOWLEDGE).createConsumer(new ActiveMQTopic("log4j.MAIN.WARN")); info = conn.createSession(false, Session.AUTO_ACKNOWLEDGE).createConsumer(new ActiveMQTopic("log4j.MAIN.INFO")); debug = conn.createSession(false, Session.AUTO_ACKNOWLEDGE).createConsumer(new ActiveMQTopic("log4j.MAIN.DEBUG")); // lets try configure log4j Properties properties = new Properties(); properties.load(getClass().getResourceAsStream("test-log4j.properties")); PropertyConfigurator.configure(properties); Logger warnLog; Logger infoLog; Logger debugLog; warnLog = Logger.getLogger("MAIN.WARN"); warnLog.setLevel(Level.WARN); warnLog.warn("Warn Message"); warnLog.info("Info Message"); warnLog.debug("Debug Message"); infoLog = Logger.getLogger("MAIN.INFO"); infoLog.setLevel(Level.INFO); infoLog.warn("Warn Message"); infoLog.info("Info Message"); infoLog.debug("Debug Message"); debugLog = Logger.getLogger("MAIN.DEBUG"); debugLog.setLevel(Level.DEBUG); debugLog.warn("Warn Message"); debugLog.info("Info Message"); debugLog.debug("Debug Message"); TextMessage msg; // Test warn level msg = (TextMessage)warn.receive(1000); assertNotNull(msg); assertEquals("Warn Message", msg.getText()); msg = (TextMessage)warn.receive(1000); assertNull(msg); // We should not receive anymore message because our // level is warning only // Test info level msg = (TextMessage)info.receive(1000); assertNotNull(msg); assertEquals("Warn Message", msg.getText()); msg = (TextMessage)info.receive(1000); assertNotNull(msg); assertEquals("Info Message", msg.getText()); msg = (TextMessage)info.receive(1000); assertNull(msg); // We should not receive the debug message // Test debug level msg = (TextMessage)debug.receive(1000); assertNotNull(msg); assertEquals("Warn Message", msg.getText()); msg = (TextMessage)debug.receive(1000); assertNotNull(msg); assertEquals("Info Message", msg.getText()); msg = (TextMessage)debug.receive(1000); assertNotNull(msg); } }