cziegeler 2004/05/04 07:11:17
Modified: src/java/org/apache/cocoon/servlet CocoonServlet.java Log: experimental support for log4j Revision Changes Path 1.27 +30 -25 cocoon-2.1/src/java/org/apache/cocoon/servlet/CocoonServlet.java Index: CocoonServlet.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/servlet/CocoonServlet.java,v retrieving revision 1.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- CocoonServlet.java 23 Apr 2004 15:50:34 -0000 1.26 +++ CocoonServlet.java 4 May 2004 14:11:16 -0000 1.27 @@ -42,6 +42,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.avalon.excalibur.logger.Log4JLoggerManager; import org.apache.avalon.excalibur.logger.LogKitLoggerManager; import org.apache.avalon.excalibur.logger.LoggerManager; @@ -761,9 +762,9 @@ * file. */ protected void initLogger() { - String logLevel = getInitParameter("log-level", "INFO"); + final String logLevel = getInitParameter("log-level", "INFO"); - final String accesslogger = getInitParameter("servlet-logger"); + final String accesslogger = getInitParameter("servlet-logger", "cocoon"); final Priority logPriority = Priority.getPriorityForName(logLevel); @@ -778,8 +779,14 @@ defaultHierarchy.setDefaultLogTarget(servTarget); defaultHierarchy.setDefaultPriority(logPriority); final Logger logger = new LogKitLogger(Hierarchy.getDefaultHierarchy().getLoggerFor("")); - final LogKitLoggerManager logKitLoggerManager = new LogKitLoggerManager(defaultHierarchy); - logKitLoggerManager.enableLogging(logger); + + // the log4j support requires currently that the log4j system is already configured elsewhere + final boolean isLog4JLogger = "log4j".equals(this.getInitParameter("logger-type", "logkit")); + + final LoggerManager logKitLoggerManager = (isLog4JLogger ? (LoggerManager)new Log4JLoggerManager() + : new LogKitLoggerManager(defaultHierarchy)); + ContainerUtil.enableLogging(logKitLoggerManager, logger); + final DefaultContext subcontext = new DefaultContext(this.appContext); subcontext.put("servlet-context", this.servletContext); if (this.servletContextPath == null) { @@ -794,33 +801,31 @@ } try { - logKitLoggerManager.contextualize(subcontext); + ContainerUtil.contextualize(logKitLoggerManager, subcontext); this.loggerManager = logKitLoggerManager; - //Configure the logkit management - String logkitConfig = getInitParameter("logkit-config", "/WEB-INF/logkit.xconf"); - - // test if this is a qualified url - InputStream is = null; - if ( logkitConfig.indexOf(':') == -1) { - is = this.servletContext.getResourceAsStream(logkitConfig); - if (is == null) is = new FileInputStream(logkitConfig); - } else { - URL logkitURL = new URL(logkitConfig); - is = logkitURL.openStream(); + if ( !isLog4JLogger ) { + //Configure the logkit management + String logkitConfig = getInitParameter("logkit-config", "/WEB-INF/logkit.xconf"); + + // test if this is a qualified url + InputStream is = null; + if ( logkitConfig.indexOf(':') == -1) { + is = this.servletContext.getResourceAsStream(logkitConfig); + if (is == null) is = new FileInputStream(logkitConfig); + } else { + URL logkitURL = new URL(logkitConfig); + is = logkitURL.openStream(); + } + final DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder(); + final Configuration conf = builder.build(is); + ContainerUtil.configure(logKitLoggerManager, conf); } - final DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder(); - final Configuration conf = builder.build(is); - logKitLoggerManager.configure(conf); } catch (Exception e) { errorHandler.error("Could not set up Cocoon Logger, will use screen instead", e, null); } - if (accesslogger != null) { - this.log = logKitLoggerManager.getLoggerForCategory(accesslogger); - } else { - this.log = logKitLoggerManager.getLoggerForCategory("cocoon"); - } + this.log = this.loggerManager.getLoggerForCategory(accesslogger); } /**