From 051a0b5c53ac577208fcc13a6b143b3a1e80e24a Mon Sep 17 00:00:00 2001 From: Lari Hotari Date: Mon, 26 Sep 2011 12:48:25 +0300 Subject: [PATCH] Fix for GRAILS-8010 [Duplicated log message if any appenders named in root{...} block] --- .../grails/plugins/log4j/Log4jConfig.groovy | 26 +++++++++++++++++++ .../plugins/log4j/LoggingGrailsPlugin.groovy | 6 +---- .../log4j/web/util/Log4jConfigListener.java | 16 +----------- .../plugins/logging/LoggingInitializer.java | 12 ++------- 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/grails-plugin-log4j/src/main/groovy/org/codehaus/groovy/grails/plugins/log4j/Log4jConfig.groovy b/grails-plugin-log4j/src/main/groovy/org/codehaus/groovy/grails/plugins/log4j/Log4jConfig.groovy index 577e37db60e..e147c828290 100644 --- a/grails-plugin-log4j/src/main/groovy/org/codehaus/groovy/grails/plugins/log4j/Log4jConfig.groovy +++ b/grails-plugin-log4j/src/main/groovy/org/codehaus/groovy/grails/plugins/log4j/Log4jConfig.groovy @@ -15,9 +15,13 @@ */ package org.codehaus.groovy.grails.plugins.log4j +import java.util.Collection; +import java.util.Map; + import grails.util.BuildSettings import grails.util.BuildSettingsHolder import grails.util.Environment +import groovy.lang.Closure; import org.apache.commons.beanutils.BeanUtils import org.apache.log4j.Appender @@ -25,6 +29,7 @@ import org.apache.log4j.ConsoleAppender import org.apache.log4j.FileAppender import org.apache.log4j.HTMLLayout import org.apache.log4j.Level +import org.apache.log4j.LogManager; import org.apache.log4j.Logger import org.apache.log4j.PatternLayout import org.apache.log4j.RollingFileAppender @@ -56,6 +61,27 @@ class Log4jConfig { Log4jConfig(ConfigObject config) { this.config = config } + + public static void initialize(ConfigObject config) { + if (config != null) { + LogManager.resetConfiguration(); + Object o = config.get("log4j") + Log4jConfig log4jConfig = new Log4jConfig(config) + if (o instanceof Closure) { + log4jConfig.configure((Closure)o); + } + else if (o instanceof Map) { + log4jConfig.configure((Map)o); + } + else if (o instanceof Collection) { + log4jConfig.configure((Collection)o); + } + else { + // setup default logging + log4jConfig.configure(); + } + } + } def methodMissing(String name, args) { if (APPENDERS.containsKey(name) && args) { diff --git a/grails-plugin-log4j/src/main/groovy/org/codehaus/groovy/grails/plugins/log4j/LoggingGrailsPlugin.groovy b/grails-plugin-log4j/src/main/groovy/org/codehaus/groovy/grails/plugins/log4j/LoggingGrailsPlugin.groovy index 0defdb615a9..8707e916510 100644 --- a/grails-plugin-log4j/src/main/groovy/org/codehaus/groovy/grails/plugins/log4j/LoggingGrailsPlugin.groovy +++ b/grails-plugin-log4j/src/main/groovy/org/codehaus/groovy/grails/plugins/log4j/LoggingGrailsPlugin.groovy @@ -46,11 +46,7 @@ class LoggingGrailsPlugin { } def onConfigChange = { event -> - def log4jConfig = event.source.log4j - if (log4jConfig instanceof Closure || log4jConfig instanceof Collection || log4jConfig instanceof Map) { - LogManager.resetConfiguration() - new Log4jConfig(event.application.config).configure(log4jConfig) - } + Log4jConfig.initialize(event.source) } def doWithWebDescriptor = { webXml -> diff --git a/grails-plugin-log4j/src/main/groovy/org/codehaus/groovy/grails/plugins/log4j/web/util/Log4jConfigListener.java b/grails-plugin-log4j/src/main/groovy/org/codehaus/groovy/grails/plugins/log4j/web/util/Log4jConfigListener.java index 53f2588ce21..19d831f9dc4 100644 --- a/grails-plugin-log4j/src/main/groovy/org/codehaus/groovy/grails/plugins/log4j/web/util/Log4jConfigListener.java +++ b/grails-plugin-log4j/src/main/groovy/org/codehaus/groovy/grails/plugins/log4j/web/util/Log4jConfigListener.java @@ -49,21 +49,7 @@ public void contextInitialized(ServletContextEvent event) { // create empty app to provide metadata GrailsApplication application = new DefaultGrailsApplication(); co = application.getConfig(); - if (co != null) { - Object o = co.get("log4j"); - if (o instanceof Closure) { - new Log4jConfig(co).configure((Closure)o); - } - else if (o instanceof Collection) { - new Log4jConfig(co).configure((Collection)o); - } - else if (o instanceof Map) { - new Log4jConfig(co).configure((Map)o); - } - else { - new Log4jConfig(co).configure(); - } - } + Log4jConfig.initialize(co); } } catch (Throwable e) { diff --git a/grails-plugin-log4j/src/main/groovy/org/codehaus/groovy/grails/plugins/logging/LoggingInitializer.java b/grails-plugin-log4j/src/main/groovy/org/codehaus/groovy/grails/plugins/logging/LoggingInitializer.java index 229a8411819..3a44d73bc4b 100644 --- a/grails-plugin-log4j/src/main/groovy/org/codehaus/groovy/grails/plugins/logging/LoggingInitializer.java +++ b/grails-plugin-log4j/src/main/groovy/org/codehaus/groovy/grails/plugins/logging/LoggingInitializer.java @@ -15,9 +15,8 @@ */ package org.codehaus.groovy.grails.plugins.logging; -import groovy.lang.Closure; import groovy.util.ConfigObject; -import org.apache.log4j.LogManager; + import org.codehaus.groovy.grails.plugins.log4j.Log4jConfig; /** @@ -29,13 +28,6 @@ public class LoggingInitializer { public void initialize(ConfigObject config) { - LogManager.resetConfiguration(); - Object log4j = config.get("log4j"); - if (log4j instanceof Closure) { - new Log4jConfig(config).configure((Closure)log4j); - } else { - // setup default logging - new Log4jConfig(config).configure(); - } + Log4jConfig.initialize(config); } }