Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

Lighthouse 1047 patch for 1.2.x #317

Closed
wants to merge 2 commits into from

2 participants

Niels Morten Kjetland
Niels

[#1047] Create a patch so that log4j-xml-configuration will be used correctly. Added a small test-app which test this issue.

Morten Kjetland
Collaborator

thanks. merged

Morten Kjetland mbknor closed this
Fehmi Can Sağlam fehmicansaglam referenced this pull request from a commit in fehmicansaglam/play
Guillaume Bort guillaumebort [#317] Call executeUpdate() 63b1def
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
This page is out of date. Refresh to see the latest.
11 framework/src/play/Logger.java
View
@@ -15,6 +15,8 @@
import org.apache.log4j.PatternLayout;
import org.apache.log4j.Priority;
import org.apache.log4j.PropertyConfigurator;
+import org.apache.log4j.xml.DOMConfigurator;
+
import play.exceptions.PlayException;
/**
@@ -54,7 +56,9 @@
public static void init() {
String log4jPath = Play.configuration.getProperty("application.log.path", "/log4j.xml");
URL log4jConf = Logger.class.getResource(log4jPath);
+ boolean isXMLConfig = log4jPath.endsWith(".xml");
if (log4jConf == null) { // try again with the .properties
+ isXMLConfig = false;
log4jPath = Play.configuration.getProperty("application.log.path", "/log4j.properties");
log4jConf = Logger.class.getResource(log4jPath);
}
@@ -69,8 +73,11 @@ public static void init() {
// so it's probably a custom configuration file
configuredManually = true;
}
-
- PropertyConfigurator.configure(log4jConf);
+ if (isXMLConfig) {
+ DOMConfigurator.configure(log4jConf);
+ } else {
+ PropertyConfigurator.configure(log4jConf);
+ }
Logger.log4j = org.apache.log4j.Logger.getLogger("play");
// In test mode, append logs to test-result/application.log
if (Play.runingInTestMode()) {
103 framework/test-src/play/LoggerTest.java
View
@@ -0,0 +1,103 @@
+package play;
+/**
+ *
+ */
+
+
+import java.io.File;
+import java.util.Properties;
+
+
+
+import org.apache.log4j.Level;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+
+/**
+ * Test the Logger class. At the moment only a few methods.
+ * @author niels
+ *
+ */
+public class LoggerTest {
+
+ private static final String APPLICATION_LOG_PATH_PROPERTYNAME = "application.log.path";
+
+// private static String applicationLogPath;
+
+ private static Properties playConfig;
+
+ private static File applicationPath;
+
+ private static String id;
+
+ private static org.apache.log4j.Logger log4j;
+
+ /**
+ * Safes the original configuration and log.
+ * @throws java.lang.Exception
+ */
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ playConfig = Play.configuration;
+ applicationPath = Play.applicationPath;
+ id = Play.id;
+ log4j = Logger.log4j;
+ }
+
+ /**
+ * Restore the original configuration and log.
+ * @throws java.lang.Exception
+ */
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ Play.configuration = playConfig;
+ Play.applicationPath = applicationPath;
+ Play.id = id ;
+ Logger.log4j = log4j;
+ if (Play.configuration != null) {
+ Logger.init();
+ }
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ Play.configuration = new Properties();
+ Play.applicationPath = new File(".");
+ Play.id="test";
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+
+ /**
+ * Test method for {@link play.Logger#init()}.
+ */
+ @Test
+ public void testInitWithProperties() {
+ Play.configuration.put(APPLICATION_LOG_PATH_PROPERTYNAME, "/play/testlog4j.properties");
+ Logger.log4j=null;
+ Logger.init();
+ org.apache.log4j.Logger log4jLogger = org.apache.log4j.Logger.getLogger("logtest.properties");
+ assertEquals(Level.ERROR, log4jLogger.getLevel());
+ }
+
+ /**
+ * Test method for {@link play.Logger#init()}.
+ */
+ @Test
+ public void testInitWithXML() {
+ Play.configuration.put(APPLICATION_LOG_PATH_PROPERTYNAME, "/play/testlog4j.xml");
+ Logger.log4j=null;
+ Logger.init();
+ org.apache.log4j.Logger log4jLogger = org.apache.log4j.Logger.getLogger("logtest.xml");
+ assertEquals(Level.ERROR, log4jLogger.getLevel());
+ }
+}
9 framework/test-src/play/testlog4j.properties
View
@@ -0,0 +1,9 @@
+log4j.rootLogger=DEBUG, PropertiesConsoleAppender
+
+log4j.appender.PropertiesConsoleAppender=org.apache.log4j.ConsoleAppender
+log4j.appender.PropertiesConsoleAppender.layout=org.apache.log4j.PatternLayout
+log4j.appender.PropertiesConsoleAppender.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c: %m%n
+
+
+
+log4j.logger.logtest.properties=ERROR
21 framework/test-src/play/testlog4j.xml
View
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+ <appender name="XmlConsoleAppender" class="org.apache.log4j.ConsoleAppender">
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d{ISO8601} %-5p [%t] %c: %m%n" />
+ </layout>
+ </appender>
+
+ <logger name="logtest.xml">
+ <level value="ERROR"/>
+ </logger>
+
+ <root>
+ <priority value="DEBUG" />
+ <appender-ref ref="XmlConsoleAppender" />
+ </root>
+
+</log4j:configuration>
Something went wrong with that request. Please try again.