Author: mattsicker
Date: Mon Mar 17 00:10:25 2014
New Revision: 1578184

URL: http://svn.apache.org/r1578184
Log:
Add caller information unit tests.

  - Other loggers should probably add their own unit tests to this class or
    at least follow the same general idea.

Added:
    
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/CallerInformationTest.java
   (with props)
    
logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j2-calling-class.xml
   (with props)

Added: 
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/CallerInformationTest.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/CallerInformationTest.java?rev=1578184&view=auto
==============================================================================
--- 
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/CallerInformationTest.java
 (added)
+++ 
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/CallerInformationTest.java
 Mon Mar 17 00:10:25 2014
@@ -0,0 +1,98 @@
+/*
+ * 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.logging.log4j.core.pattern;
+
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.config.ConfigurationFactory;
+import org.apache.logging.log4j.status.StatusLogger;
+import org.apache.logging.log4j.test.appender.ListAppender;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+public class CallerInformationTest {
+
+    private static final String CONFIG = "log4j2-calling-class.xml";
+
+    private static LoggerContext ctx;
+
+    private static Map<String, Appender> appenders;
+
+    @BeforeClass
+    public static void setConfig() {
+        System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY, 
CONFIG);
+        ctx = (LoggerContext) LogManager.getContext(false);
+        assertNotNull("No LoggerContext created.", ctx);
+        final Configuration config = ctx.getConfiguration();
+        assertNotNull("No configuration found!", config);
+        appenders = config.getAppenders();
+        assertNotNull("No appenders found!", appenders);
+        assertEquals("Incorrect number of appenders configured.", 2, 
appenders.size());
+    }
+
+    @AfterClass
+    public static void resetConfig() {
+        System.clearProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY);
+        ctx.reconfigure();
+        StatusLogger.getLogger().reset();
+    }
+
+    @Test
+    public void testClassLogger() throws Exception {
+        final ListAppender app = (ListAppender) appenders.get("Class");
+        assertNotNull(app);
+        app.clear();
+        final Logger logger = ctx.getLogger("ClassLogger");
+        logger.info("Ignored message contents.");
+        logger.warn("Verifying the caller class is still correct.");
+        logger.error("Hopefully nobody breaks me!");
+        final List<String> messages = app.getMessages();
+        assertEquals("Incorrect number of messages.", 3, messages.size());
+        for (final String message : messages) {
+            assertEquals("Incorrect caller class name.", 
this.getClass().getName(), message);
+        }
+    }
+
+    @Test
+    public void testMethodLogger() throws Exception {
+        final ListAppender app = (ListAppender) appenders.get("Method");
+        assertNotNull(app);
+        app.clear();
+        final Logger logger = ctx.getLogger("MethodLogger");
+        logger.info("More messages.");
+        logger.warn("CATASTROPHE INCOMING!");
+        logger.error("ZOMBIES!!!");
+        logger.fatal("brains~~~");
+        logger.info("Itchy. Tasty.");
+        final List<String> messages = app.getMessages();
+        assertEquals("Incorrect number of messages.", 5, messages.size());
+        for (final String message : messages) {
+            assertEquals("Incorrect caller method name.", "testMethodLogger", 
message);
+        }
+    }
+}

Propchange: 
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/CallerInformationTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j2-calling-class.xml
URL: 
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j2-calling-class.xml?rev=1578184&view=auto
==============================================================================
--- 
logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j2-calling-class.xml
 (added)
+++ 
logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j2-calling-class.xml
 Mon Mar 17 00:10:25 2014
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+
+-->
+<Configuration name="CallerInformationTest" status="error" 
packages="org.apache.logging.log4j.test">
+  <Appenders>
+    <List name="Class">
+      <PatternLayout pattern="%class"/>
+    </List>
+    <List name="Method">
+      <PatternLayout pattern="%method"/>
+    </List>
+  </Appenders>
+  <Loggers>
+    <Logger name="ClassLogger" level="info">
+      <AppenderRef ref="Class"/>
+    </Logger>
+    <Logger name="MethodLogger" level="info">
+      <AppenderRef ref="Method"/>
+    </Logger>
+    <Root level="off"/>
+  </Loggers>
+</Configuration>
\ No newline at end of file

Propchange: 
logging/log4j/log4j2/trunk/log4j-core/src/test/resources/log4j2-calling-class.xml
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to