You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by ca...@apache.org on 2006/01/02 06:10:54 UTC
svn commit: r365293 - in /logging/log4j/trunk: src/java/org/apache/log4j/
src/java/org/apache/log4j/db/ src/java/org/apache/log4j/helpers/
src/java/org/apache/log4j/joran/action/ src/java/org/apache/log4j/plugins/
src/java/org/apache/log4j/selector/ser...
Author: carnold
Date: Sun Jan 1 21:10:42 2006
New Revision: 365293
URL: http://svn.apache.org/viewcvs?rev=365293&view=rev
Log:
Bug 35452: Revert LoggerRepository, add LoggerRepositoryEx for new methods
Added:
logging/log4j/trunk/src/java/org/apache/log4j/spi/HierarchyEventListenerAdapter.java
logging/log4j/trunk/src/java/org/apache/log4j/spi/LoggerRepositoryEx.java
Modified:
logging/log4j/trunk/src/java/org/apache/log4j/HTMLLayout.java
logging/log4j/trunk/src/java/org/apache/log4j/Hierarchy.java
logging/log4j/trunk/src/java/org/apache/log4j/LogManager.java
logging/log4j/trunk/src/java/org/apache/log4j/PatternLayout.java
logging/log4j/trunk/src/java/org/apache/log4j/PropertyConfigurator.java
logging/log4j/trunk/src/java/org/apache/log4j/db/CustomSQLDBReceiver.java
logging/log4j/trunk/src/java/org/apache/log4j/db/DBReceiver.java
logging/log4j/trunk/src/java/org/apache/log4j/helpers/IntializationUtil.java
logging/log4j/trunk/src/java/org/apache/log4j/joran/action/ConversionRuleAction.java
logging/log4j/trunk/src/java/org/apache/log4j/joran/action/PluginAction.java
logging/log4j/trunk/src/java/org/apache/log4j/joran/action/RepositoryPropertyAction.java
logging/log4j/trunk/src/java/org/apache/log4j/plugins/PluginRegistry.java
logging/log4j/trunk/src/java/org/apache/log4j/selector/servlet/ContextDetachingSCL.java
logging/log4j/trunk/src/java/org/apache/log4j/spi/HierarchyEventListener.java
logging/log4j/trunk/src/java/org/apache/log4j/spi/LoggerRepository.java
logging/log4j/trunk/src/java/org/apache/log4j/spi/LoggingEvent.java
logging/log4j/trunk/src/java/org/apache/log4j/spi/RootCategory.java
logging/log4j/trunk/src/java/org/apache/log4j/spi/RootLogger.java
logging/log4j/trunk/src/java/org/apache/log4j/watchdog/TimedURLWatchdog.java
logging/log4j/trunk/tests/src/java/org/apache/log4j/db/FullCycleDBTest.java
logging/log4j/trunk/tests/src/java/org/apache/log4j/joran/InterpreterTest.java
logging/log4j/trunk/tests/src/java/org/apache/log4j/plugins/PluginTestCase.java
logging/log4j/trunk/tests/src/java/org/apache/log4j/watchdog/FileWatchdogTestCase.java
Modified: logging/log4j/trunk/src/java/org/apache/log4j/HTMLLayout.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/HTMLLayout.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/HTMLLayout.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/HTMLLayout.java Sun Jan 1 21:10:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
+ * Copyright 1999,2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,7 +17,13 @@
package org.apache.log4j;
import org.apache.log4j.helpers.Transform;
-import org.apache.log4j.pattern.*;
+import org.apache.log4j.pattern.FormattingInfo;
+import org.apache.log4j.pattern.LiteralPatternConverter;
+import org.apache.log4j.pattern.LoggingEventPatternConverter;
+import org.apache.log4j.pattern.PatternConverter;
+import org.apache.log4j.pattern.PatternParser;
+import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.spi.LoggerRepositoryEx;
import org.apache.log4j.spi.LoggingEvent;
import java.util.ArrayList;
@@ -35,7 +41,6 @@
*
* @author Ceki Gülcü
* @author Steve Mactaggart
- * @version 1.3
*/
public class HTMLLayout extends Layout {
/**
@@ -165,8 +170,8 @@
List converters = new ArrayList();
List fields = new ArrayList();
Map converterRegistry = null;
- if(this.repository != null) {
- converterRegistry = (Map) this.repository.getObject(PATTERN_RULE_REGISTRY);
+ if(this.repository instanceof LoggerRepositoryEx) {
+ converterRegistry = (Map) ((LoggerRepositoryEx) repository).getObject(PATTERN_RULE_REGISTRY);
}
PatternParser.parse(pattern, converters, fields,
converterRegistry, PatternParser.getPatternLayoutRules(), getLogger());
@@ -291,12 +296,16 @@
sbuf.append(Layout.LINE_SEP);
sbuf.append("<head>");
sbuf.append(Layout.LINE_SEP);
- sbuf.append("<title>" + title + "</title>");
+ sbuf.append("<title>");
+ sbuf.append(title);
+ sbuf.append("</title>");
sbuf.append(Layout.LINE_SEP);
if(internalCSS) {
getInternalCSS(sbuf);
} else {
- sbuf.append("<LINK REL=StyleSheet HREF=\""+url2ExternalCSS+"\" TITLE=\"Basic\">");
+ sbuf.append("<LINK REL=StyleSheet HREF=\"");
+ sbuf.append(url2ExternalCSS);
+ sbuf.append("\" TITLE=\"Basic\">");
}
sbuf.append(Layout.LINE_SEP);
sbuf.append("</head>");
@@ -307,7 +316,9 @@
sbuf.append("<hr size=\"1\" noshade>");
sbuf.append(Layout.LINE_SEP);
- sbuf.append("Log session start time " + new java.util.Date() + "<br>");
+ sbuf.append("Log session start time ");
+ sbuf.append(new java.util.Date());
+ sbuf.append("<br>");
sbuf.append(Layout.LINE_SEP);
sbuf.append("<br>");
sbuf.append(Layout.LINE_SEP);
@@ -337,8 +348,10 @@
*/
public String getFooter() {
StringBuffer sbuf = new StringBuffer();
- sbuf.append("</table>" + Layout.LINE_SEP);
- sbuf.append("<br>" + Layout.LINE_SEP);
+ sbuf.append("</table>");
+ sbuf.append(Layout.LINE_SEP);
+ sbuf.append("<br>");
+ sbuf.append(Layout.LINE_SEP);
sbuf.append("</body></html>");
return sbuf.toString();
}
@@ -352,7 +365,7 @@
}
/**
- * {@inheritDoc}
+ * @{inheritDoc}
*/
public String format(LoggingEvent event) {
Modified: logging/log4j/trunk/src/java/org/apache/log4j/Hierarchy.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/Hierarchy.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/Hierarchy.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/Hierarchy.java Sun Jan 1 21:10:42 2006
@@ -20,7 +20,6 @@
// WARNING directly nor indirectly.
package org.apache.log4j;
-import org.apache.log4j.Appender;
import org.apache.log4j.helpers.IntializationUtil;
import org.apache.log4j.helpers.LogLog;
import org.apache.log4j.or.ObjectRenderer;
@@ -30,7 +29,7 @@
import org.apache.log4j.spi.ErrorItem;
import org.apache.log4j.spi.LoggerEventListener;
import org.apache.log4j.spi.LoggerFactory;
-import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.spi.LoggerRepositoryEx;
import org.apache.log4j.spi.LoggerRepositoryEventListener;
import org.apache.log4j.spi.RendererSupport;
@@ -71,10 +70,10 @@
@author Mark Womack
*/
-public class Hierarchy implements LoggerRepository, RendererSupport {
+public class Hierarchy implements LoggerRepositoryEx, RendererSupport {
private LoggerFactory defaultFactory;
- private ArrayList repositoryEventListeners;
- private ArrayList loggerEventListeners;
+ private final ArrayList repositoryEventListeners;
+ private final ArrayList loggerEventListeners;
String name;
Hashtable ht;
Logger root;
@@ -84,16 +83,16 @@
PluginRegistry pluginRegistry;
Map properties;
private Scheduler scheduler;
-
+
// The repository can also be used as an object store for various objects used
// by log4j components
private Map objectMap;
-
+
// the internal logger used by this instance of Hierarchy for its own reporting
private Logger myLogger;
-
+
private List errorList = new Vector();
-
+
boolean emittedNoAppenderWarning = false;
boolean emittedNoResourceBundleWarning = false;
boolean pristine = true;
@@ -135,7 +134,7 @@
synchronized (repositoryEventListeners) {
if (repositoryEventListeners.contains(listener)) {
getMyLogger().warn(
- "Ignoring attempt to add a previously registerd LoggerRepositoryEventListener.");
+ "Ignoring attempt to add a previously registered LoggerRepositoryEventListener.");
} else {
repositoryEventListeners.add(listener);
}
@@ -148,7 +147,7 @@
}
return myLogger;
}
-
+
/**
Remove a {@link LoggerRepositoryEventListener} from the repository.
@since 1.3*/
@@ -179,6 +178,16 @@
}
}
+ /**
+ Add a {@link org.apache.log4j.spi.HierarchyEventListener} event to the repository.
+ @deprecated Superceded by addLoggerEventListener
+ */
+ public
+ void addHierarchyEventListener(final org.apache.log4j.spi.HierarchyEventListener listener) {
+ addLoggerEventListener(new org.apache.log4j.spi.HierarchyEventListenerAdapter(listener));
+ }
+
+
/**
Remove a {@link LoggerEventListener} from the repository.
@since 1.3*/
@@ -255,9 +264,9 @@
}
}
- /*
+ /*
* Get the properties for this repository.
- *
+ *
* @see org.apache.log4j.spi.LoggerRepository#getProperties()
*
*/
@@ -265,7 +274,7 @@
return properties;
}
- /*
+ /*
* Get a property of this repository.
* @see org.apache.log4j.spi.LoggerRepository#getProperty(java.lang.String)
*/
@@ -273,7 +282,7 @@
return (String) properties.get(key);
}
- /*
+ /*
* Set a property by key and value. The property will be shared by all
* events in this repository.
*/
@@ -542,15 +551,15 @@
public List getErrorList() {
return errorList;
}
-
+
/**
* Add an error item to the list of previously encountered errors.
- * @since 1.3
+ * @since 1.3
*/
public void addErrorItem(ErrorItem errorItem) {
getErrorList().add(errorItem);
}
-
+
/**
@deprecated Please use {@link #getCurrentLoggers} instead.
*/
@@ -671,13 +680,13 @@
}
private void shutdown(boolean doingReset) {
-
+
// stop this repo's scheduler if it has one
if(scheduler != null) {
scheduler.shutdown();
scheduler = null;
}
-
+
// let listeners know about shutdown if this is
// not being done as part of a reset.
if (!doingReset) {
Modified: logging/log4j/trunk/src/java/org/apache/log4j/LogManager.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/LogManager.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/LogManager.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/LogManager.java Sun Jan 1 21:10:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999,2005 The Apache Software Foundation.
+ * Copyright 1999,2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -117,8 +117,9 @@
System.out.println("**Start of LogManager static initializer");
}
- defaultLoggerRepository = new Hierarchy(new RootLogger(Level.DEBUG));
- defaultLoggerRepository.setName(Constants.DEFAULT_REPOSITORY_NAME);
+ Hierarchy hierarchy = new Hierarchy(new RootLogger(Level.DEBUG));
+ defaultLoggerRepository = hierarchy;
+ hierarchy.setName(Constants.DEFAULT_REPOSITORY_NAME);
// temporary repository
repositorySelector = new DefaultRepositorySelector(defaultLoggerRepository);
Modified: logging/log4j/trunk/src/java/org/apache/log4j/PatternLayout.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/PatternLayout.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/PatternLayout.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/PatternLayout.java Sun Jan 1 21:10:42 2006
@@ -22,9 +22,8 @@
import org.apache.log4j.pattern.LoggingEventPatternConverter;
import org.apache.log4j.pattern.PatternParser;
import org.apache.log4j.spi.LoggingEvent;
+import org.apache.log4j.spi.LoggerRepositoryEx;
-import java.io.IOException;
-import java.io.Writer;
import java.util.ArrayList;
import java.util.Iterator;
@@ -513,8 +512,10 @@
Map converterRegistry = null;
if (this.repository != null) {
- converterRegistry =
- (Map) this.repository.getObject(PATTERN_RULE_REGISTRY);
+ if (repository instanceof LoggerRepositoryEx) {
+ converterRegistry =
+ (Map) ((LoggerRepositoryEx) repository).getObject(PATTERN_RULE_REGISTRY);
+ }
}
PatternParser.parse(
Modified: logging/log4j/trunk/src/java/org/apache/log4j/PropertyConfigurator.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/PropertyConfigurator.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/PropertyConfigurator.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/PropertyConfigurator.java Sun Jan 1 21:10:42 2006
@@ -19,7 +19,6 @@
// Anders Kristensen <ak...@dynamicsoft.com>
package org.apache.log4j;
-import org.apache.log4j.DefaultCategoryFactory;
import org.apache.log4j.config.ConfiguratorBase;
import org.apache.log4j.config.PropertySetter;
import org.apache.log4j.helpers.OptionConverter;
@@ -28,6 +27,7 @@
import org.apache.log4j.spi.ErrorItem;
import org.apache.log4j.spi.LoggerFactory;
import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.spi.LoggerRepositoryEx;
//import org.apache.log4j.config.PropertySetterException;
import org.apache.log4j.spi.OptionHandler;
@@ -367,7 +367,9 @@
// As soon as we start configuration process, the pristine flag is set to
// false.
- repository.setPristine(false);
+ if(repository instanceof LoggerRepositoryEx) {
+ ((LoggerRepositoryEx) repository).setPristine(false);
+ }
String thresholdStr =
Modified: logging/log4j/trunk/src/java/org/apache/log4j/db/CustomSQLDBReceiver.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/db/CustomSQLDBReceiver.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/db/CustomSQLDBReceiver.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/db/CustomSQLDBReceiver.java Sun Jan 1 21:10:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
+ * Copyright 1999,2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -30,6 +30,7 @@
import org.apache.log4j.scheduler.Job;
import org.apache.log4j.scheduler.Scheduler;
import org.apache.log4j.spi.LoggingEvent;
+import org.apache.log4j.spi.LoggerRepositoryEx;
import org.apache.log4j.spi.ThrowableInformation;
import org.apache.log4j.spi.LocationInfo;
@@ -175,11 +176,13 @@
}
+
+ if (repository instanceof LoggerRepositoryEx) {
+ Scheduler scheduler = ((LoggerRepositoryEx) repository).getScheduler();
- Scheduler scheduler = this.repository.getScheduler();
-
- scheduler.schedule(
+ scheduler.schedule(
customReceiverJob, System.currentTimeMillis() + 500, refreshMillis);
+ }
}
@@ -241,8 +244,8 @@
public void shutdown() {
getLogger().info("removing receiverJob from the Scheduler.");
- if(this.repository != null) {
- Scheduler scheduler = repository.getScheduler();
+ if(this.repository instanceof LoggerRepositoryEx) {
+ Scheduler scheduler = ((LoggerRepositoryEx) repository).getScheduler();
scheduler.delete(customReceiverJob);
}
Modified: logging/log4j/trunk/src/java/org/apache/log4j/db/DBReceiver.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/db/DBReceiver.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/db/DBReceiver.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/db/DBReceiver.java Sun Jan 1 21:10:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
+ * Copyright 1999,2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,6 +20,7 @@
import org.apache.log4j.plugins.Receiver;
import org.apache.log4j.scheduler.Scheduler;
import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.spi.LoggerRepositoryEx;
/**
*
@@ -54,10 +55,12 @@
"DBAppender cannot function without a reference to its owning repository");
}
- Scheduler scheduler = this.repository.getScheduler();
+ if (repository instanceof LoggerRepositoryEx) {
+ Scheduler scheduler = ((LoggerRepositoryEx) repository).getScheduler();
- scheduler.schedule(
- receiverJob, System.currentTimeMillis() + 500, refreshMillis);
+ scheduler.schedule(
+ receiverJob, System.currentTimeMillis() + 500, refreshMillis);
+ }
}
@@ -92,8 +95,8 @@
public void shutdown() {
getLogger().info("removing receiverJob from the Scheduler.");
- if(this.repository != null) {
- Scheduler scheduler = repository.getScheduler();
+ if(this.repository instanceof LoggerRepositoryEx) {
+ Scheduler scheduler = ((LoggerRepositoryEx) repository).getScheduler();
scheduler.delete(receiverJob);
}
}
Modified: logging/log4j/trunk/src/java/org/apache/log4j/helpers/IntializationUtil.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/helpers/IntializationUtil.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/helpers/IntializationUtil.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/helpers/IntializationUtil.java Sun Jan 1 21:10:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
+ * Copyright 1999,2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,9 +16,8 @@
package org.apache.log4j.helpers;
-import org.apache.log4j.helpers.Loader;
-import org.apache.log4j.helpers.OptionConverter;
import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.spi.LoggerRepositoryEx;
import java.net.MalformedURLException;
import java.net.URL;
@@ -78,11 +77,17 @@
// configuration to the OptionConverter.selectAndConfigure
// method.
if (url != null) {
- LogLog.info(
- "Using URL [" + url
- + "] for automatic log4j configuration of repository named ["+
- repository.getName()+"].");
-
+ if (repository instanceof LoggerRepositoryEx) {
+ LogLog.info(
+ "Using URL [" + url
+ + "] for automatic log4j configuration of repository named ["+
+ ((LoggerRepositoryEx) repository).getName()+"].");
+ } else {
+ LogLog.info(
+ "Using URL [" + url
+ + "] for automatic log4j configuration of unnamed repository.");
+ }
+
OptionConverter.selectAndConfigure(url, configuratorClassNameStr, repository);
}
}
Modified: logging/log4j/trunk/src/java/org/apache/log4j/joran/action/ConversionRuleAction.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/joran/action/ConversionRuleAction.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/joran/action/ConversionRuleAction.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/joran/action/ConversionRuleAction.java Sun Jan 1 21:10:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
+ * Copyright 1999,2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -26,6 +26,7 @@
import org.apache.log4j.joran.spi.ExecutionContext;
import org.apache.log4j.spi.ErrorItem;
import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.spi.LoggerRepositoryEx;
import org.xml.sax.Attributes;
@@ -73,10 +74,12 @@
LoggerRepository repository = (LoggerRepository) ec.getObjectStack().get(0);
- Map ruleRegistry = (Map) repository.getObject(PatternLayout.PATTERN_RULE_REGISTRY);
+ //
+ // cast may fail with user supplied repository
+ Map ruleRegistry = (Map) ((LoggerRepositoryEx) repository).getObject(PatternLayout.PATTERN_RULE_REGISTRY);
if(ruleRegistry == null) {
ruleRegistry = new HashMap();
- repository.putObject(PatternLayout.PATTERN_RULE_REGISTRY, ruleRegistry);
+ ((LoggerRepositoryEx) repository).putObject(PatternLayout.PATTERN_RULE_REGISTRY, ruleRegistry);
}
// put the new rule into the rule registry
ruleRegistry.put(conversionWord, converterClass);
Modified: logging/log4j/trunk/src/java/org/apache/log4j/joran/action/PluginAction.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/joran/action/PluginAction.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/joran/action/PluginAction.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/joran/action/PluginAction.java Sun Jan 1 21:10:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
+ * Copyright 1999,2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,6 +22,7 @@
import org.apache.log4j.plugins.Plugin;
import org.apache.log4j.spi.ErrorItem;
import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.spi.LoggerRepositoryEx;
import org.apache.log4j.spi.OptionHandler;
import org.xml.sax.Attributes;
@@ -59,9 +60,12 @@
}
LoggerRepository repository = (LoggerRepository) ec.getObject(0);
-
- repository.getPluginRegistry().addPlugin(plugin);
- plugin.setLoggerRepository(repository);
+
+ //
+ // cast may fail when using user supplied repository
+ //
+ ((LoggerRepositoryEx) repository).getPluginRegistry().addPlugin(plugin);
+ plugin.setLoggerRepository(repository);
getLogger().debug("Pushing plugin on to the object stack.");
ec.pushObject(plugin);
Modified: logging/log4j/trunk/src/java/org/apache/log4j/joran/action/RepositoryPropertyAction.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/joran/action/RepositoryPropertyAction.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/joran/action/RepositoryPropertyAction.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/joran/action/RepositoryPropertyAction.java Sun Jan 1 21:10:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
+ * Copyright 1999,2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,6 +19,7 @@
import org.apache.log4j.joran.spi.ExecutionContext;
import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.spi.LoggerRepositoryEx;
/**
* @author ceki
@@ -33,12 +34,15 @@
if(repository == null) {
}
-
- repository.getProperties().putAll(props);
+ if (repository instanceof LoggerRepositoryEx) {
+ ((LoggerRepositoryEx) repository).getProperties().putAll(props);
+ }
}
public void setProperty(ExecutionContext ec, String key, String value) {
LoggerRepository repository = getLoggerRepository();
- repository.setProperty(key, value);
+ if (repository instanceof LoggerRepositoryEx) {
+ ((LoggerRepositoryEx) repository).setProperty(key, value);
+ }
}
}
Modified: logging/log4j/trunk/src/java/org/apache/log4j/plugins/PluginRegistry.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/plugins/PluginRegistry.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/plugins/PluginRegistry.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/plugins/PluginRegistry.java Sun Jan 1 21:10:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
+ * Copyright 1999,2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,6 +23,7 @@
import java.util.Map;
import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.spi.LoggerRepositoryEx;
import org.apache.log4j.spi.LoggerRepositoryEventListener;
@@ -41,7 +42,7 @@
* key=plugin.getName, value=plugin
*/
private final Map pluginMap;
- private final LoggerRepository loggerRepository;
+ private final LoggerRepositoryEx loggerRepository;
/**
* the listener used to listen for repository events.
@@ -49,13 +50,13 @@
private final RepositoryListener listener = new RepositoryListener();
private final List listenerList = Collections.synchronizedList(new ArrayList());
- public PluginRegistry(LoggerRepository loggerRepository) {
+ public PluginRegistry(LoggerRepositoryEx loggerRepository) {
pluginMap = new HashMap();
this.loggerRepository = loggerRepository;
this.loggerRepository.addLoggerRepositoryEventListener(listener);
}
- public LoggerRepository getLoggerRepository() {
+ public LoggerRepositoryEx getLoggerRepository() {
return loggerRepository;
}
@@ -77,7 +78,7 @@
/**
* Adds a plugin to the plugin registry. If a plugin with the same name exists
* already, it is shutdown and removed.
- *
+ *
* @param plugin the plugin to add.
* */
public void addPlugin(Plugin plugin) {
@@ -87,7 +88,7 @@
// make sure the plugin has reference to repository
plugin.setLoggerRepository(getLoggerRepository());
-
+
Plugin existingPlugin = (Plugin)pluginMap.get(name);
if (existingPlugin != null) {
existingPlugin.shutdown();
Modified: logging/log4j/trunk/src/java/org/apache/log4j/selector/servlet/ContextDetachingSCL.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/selector/servlet/ContextDetachingSCL.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/selector/servlet/ContextDetachingSCL.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/selector/servlet/ContextDetachingSCL.java Sun Jan 1 21:10:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
+ * Copyright 1999,2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,6 +21,7 @@
import org.apache.log4j.helpers.Constants;
import org.apache.log4j.helpers.JNDIUtil;
import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.spi.LoggerRepositoryEx;
import org.apache.log4j.spi.RepositorySelector;
import javax.naming.Context;
@@ -75,7 +76,12 @@
LoggerRepository lr = repositorySelector.detachRepository(loggingContextName);
if(lr != null) {
Logger logger = lr.getLogger(this.getClass().getName());
- logger.debug("About to shutdown logger repository named [{}]", lr.getName());
+ if (lr instanceof LoggerRepositoryEx) {
+ logger.debug("About to shutdown logger repository named [{}]",
+ ((LoggerRepositoryEx) lr).getName());
+ } else {
+ logger.debug("About to shutdown unnamed logger repository");
+ }
lr.shutdown();
}
}
Modified: logging/log4j/trunk/src/java/org/apache/log4j/spi/HierarchyEventListener.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/spi/HierarchyEventListener.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/spi/HierarchyEventListener.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/spi/HierarchyEventListener.java Sun Jan 1 21:10:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
+ * Copyright 1999,2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,7 +16,8 @@
package org.apache.log4j.spi;
-import org.apache.log4j.*;
+import org.apache.log4j.Appender;
+import org.apache.log4j.Category;
/**
@@ -25,6 +26,7 @@
@author Ceki Gülcü
@since 1.2
+ @deprecated Superceded by LoggerEventListener.
*/
public interface HierarchyEventListener {
Added: logging/log4j/trunk/src/java/org/apache/log4j/spi/HierarchyEventListenerAdapter.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/spi/HierarchyEventListenerAdapter.java?rev=365293&view=auto
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/spi/HierarchyEventListenerAdapter.java (added)
+++ logging/log4j/trunk/src/java/org/apache/log4j/spi/HierarchyEventListenerAdapter.java Sun Jan 1 21:10:42 2006
@@ -0,0 +1,75 @@
+/*
+ * Copyright 1999,2006 The Apache Software Foundation.
+ *
+ * Licensed 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.log4j.spi;
+
+import org.apache.log4j.Appender;
+import org.apache.log4j.Logger;
+
+
+/**
+ * Adapter class that wraps an object that implements
+ * HierarchyEventListener and exposes the log4j 1.3 introduced
+ * LoggerEventListener interface.
+ *
+ * @deprecated
+ */
+public final class HierarchyEventListenerAdapter implements LoggerEventListener {
+ /**
+ * Wrapped listener.
+ */
+ private final org.apache.log4j.spi.HierarchyEventListener listener;
+
+ /**
+ * Constructs a new instance of HierarchyEventListenerAdapter.
+ * @param listener
+ * @deprecated
+ */
+ public HierarchyEventListenerAdapter(
+ final org.apache.log4j.spi.HierarchyEventListener listener) {
+ if (listener == null) {
+ throw new IllegalArgumentException("listener");
+ }
+
+ this.listener = listener;
+ }
+
+ /**
+ Called when an appender is added to the logger.
+
+ @param logger The logger to which the appender was added.
+ @param appender The appender added to the logger. */
+ public void appenderAddedEvent(final Logger logger, final Appender appender) {
+ listener.addAppenderEvent(logger, appender);
+ }
+
+ /**
+ Called when an appender is removed from the logger.
+
+ @param logger The logger from which the appender was removed.
+ @param appender The appender removed from the logger. */
+ public void appenderRemovedEvent(
+ final Logger logger, final Appender appender) {
+ listener.removeAppenderEvent(logger, appender);
+ }
+
+ /**
+ Called when level changed on the logger.
+
+ @param logger The logger that changed levels. */
+ public void levelChangedEvent(final Logger logger) {
+ }
+}
Modified: logging/log4j/trunk/src/java/org/apache/log4j/spi/LoggerRepository.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/spi/LoggerRepository.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/spi/LoggerRepository.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/spi/LoggerRepository.java Sun Jan 1 21:10:42 2006
@@ -1,12 +1,12 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
- *
+ * Copyright 1999,2005 The Apache Software Foundation.
+ *
* Licensed 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.
@@ -16,13 +16,12 @@
package org.apache.log4j.spi;
-import org.apache.log4j.*;
-import org.apache.log4j.plugins.PluginRegistry;
-import org.apache.log4j.scheduler.Scheduler;
+import org.apache.log4j.Appender;
+import org.apache.log4j.Category;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
import java.util.Enumeration;
-import java.util.List;
-import java.util.Map;
/**
@@ -36,76 +35,34 @@
can act as a point of registry for events related to loggers.
@author Ceki Gülcü
- @author Mark Womack
@since 1.2 */
public interface LoggerRepository {
/**
- Add a {@link LoggerRepositoryEventListener} to the repository. The
- listener will be called when repository events occur.
- @since 1.3*/
- public void addLoggerRepositoryEventListener(
- LoggerRepositoryEventListener listener);
+ Add a {@link HierarchyEventListener} event to the repository.
+ @deprecated Superceded by LoggerRepositoryEx.addLoggerEventListener.
+ */
+ public void addHierarchyEventListener(HierarchyEventListener listener);
/**
- Remove a {@link LoggerRepositoryEventListener} from the repository.
- @since 1.3*/
- public void removeLoggerRepositoryEventListener(
- LoggerRepositoryEventListener listener);
-
- /**
- Add a {@link LoggerEventListener} to the repository. The listener
- will be called when repository events occur.
- @since 1.3*/
- public void addLoggerEventListener(LoggerEventListener listener);
-
-
- /**
- Remove a {@link LoggerEventListener} from the repository.
- @since 1.3*/
- public void removeLoggerEventListener(LoggerEventListener listener);
-
- /**
- Is the repository disabled for a given level? The answer depends
- on the repository threshold and the <code>level</code>
- parameter. See also {@link #setThreshold} method. */
+ Returns whether this repository is disabled for a given
+ level. The answer depends on the repository threshold and the
+ <code>level</code> parameter. See also {@link #setThreshold}
+ method. */
boolean isDisabled(int level);
-
/**
- * Get the name of this logger repository.
- * @since 1.3
- */
- public String getName();
-
-
- /**
- * A logger repository is a named entity.
- * @since 1.3
- */
- public void setName(String repoName);
-
- /**
- * Set the repository-wide threshold. All logging requests below the threshold
- * are immediately dropped. By default, the threshold is set to
- * <code>Level.ALL</code> which has the lowest possible rank.
- *
- * <p>The repository-wide threshold acts as a global on off switch. It avoids
- * the hierarchy walk, hence improving performance. In future log4j versions
- * the speed of the hiearchy walk will be significantly improved obliviating
- * the need for this method.
- *
- * <p>The repository-wide threshold is a deprecated feature.
- *
- * */
+ Set the repository-wide threshold. All logging requests below the
+ threshold are immediately dropped. By default, the threshold is
+ set to <code>Level.ALL</code> which has the lowest possible rank. */
public void setThreshold(Level level);
-
+
/**
Another form of {@link #setThreshold(Level)} accepting a string
parameter instead of a <code>Level</code>. */
public void setThreshold(String val);
- public void emitNoAppenderWarning(Category logger);
-
+ public void emitNoAppenderWarning(Category cat);
+
/**
Get the repository-wide threshold. See {@link
#setThreshold(Level)} for an explanation. */
@@ -117,21 +74,6 @@
public Logger getRootLogger();
- /**
- * Is the current configuration of the reposiroty in its original (pristine)
- * state?
- *
- * @since 1.3
- */
- public boolean isPristine();
-
- /**
- * Set the pristine flag.
- * @see #isPristine
- * @since 1.3
- */
- public void setPristine(boolean state);
-
public abstract Logger exists(String name);
public abstract void shutdown();
@@ -139,99 +81,11 @@
public Enumeration getCurrentLoggers();
/**
- @deprecated Please use {@link #getCurrentLoggers} instead. */
+ Deprecated. Please use {@link #getCurrentLoggers} instead. */
public Enumeration getCurrentCategories();
- public abstract void resetConfiguration();
-
- /**
- Requests that a appender added event be sent to any registered
- {@link LoggerEventListener}.
- @param logger The logger to which the appender was added.
- @param appender The appender added to the logger.*/
- public abstract void fireAddAppenderEvent(Category logger, Appender appender);
-
- /**
- Requests that a appender removed event be sent to any registered
- {@link LoggerEventListener}.
- @param logger The logger from which the appender was removed.
- @param appender The appender removed from the logger.
- @since 1.3*/
- public abstract void fireRemoveAppenderEvent(
+ public abstract void fireAddAppenderEvent(
Category logger, Appender appender);
- /**
- Requests that a level changed event be sent to any registered
- {@link LoggerEventListener}.
- @param logger The logger which changed levels.
- @since 1.3*/
- public abstract void fireLevelChangedEvent(Logger logger);
-
- /**
- Requests that a configuration changed event be sent to any registered
- {@link LoggerRepositoryEventListener}.
- @since 1.3*/
- public abstract void fireConfigurationChangedEvent();
-
- /**
- * Return the PluginRegisty for this LoggerRepository.
- * @since 1.3
- */
- public PluginRegistry getPluginRegistry();
-
-
- /**
- * Return the {@link Scheduler} for this LoggerRepository.
- * @since 1.3
- */
- public Scheduler getScheduler();
-
- /**
- * Get the properties specific for this repository.
- * @since 1.3
- */
- public Map getProperties();
-
- /**
- * Get the property of this repository.
- * @since 1.3
- */
- public String getProperty(String key);
-
- /**
- * Set a property of this repository.
- * @since 1.3
- */
- public void setProperty(String key, String value);
-
- /**
- * Errors which cannot be logged, go to the error list
- *
- * @return List
- */
- public List getErrorList();
-
- /**
- * Errors which cannot be logged, go to the error list
- *
- * @param errorItem an ErrorItem to add to the error list
- */
- public void addErrorItem(ErrorItem errorItem);
-
- /**
- * A LoggerRepository can also act as a store for various objects used
- * by log4j components.
- *
- * @return The object stored under 'key'.
- * @since 1.3
- */
- public Object getObject(String key);
-
- /**
- * Store an object under 'key'. If no object can be found, null is returned.
- *
- * @param key
- * @param value
- */
- public void putObject(String key, Object value);
+ public abstract void resetConfiguration();
}
Added: logging/log4j/trunk/src/java/org/apache/log4j/spi/LoggerRepositoryEx.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/spi/LoggerRepositoryEx.java?rev=365293&view=auto
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/spi/LoggerRepositoryEx.java (added)
+++ logging/log4j/trunk/src/java/org/apache/log4j/spi/LoggerRepositoryEx.java Sun Jan 1 21:10:42 2006
@@ -0,0 +1,192 @@
+/*
+ * Copyright 1999,2006 The Apache Software Foundation.
+ *
+ * Licensed 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.log4j.spi;
+
+import org.apache.log4j.Appender;
+import org.apache.log4j.Category;
+import org.apache.log4j.Logger;
+import org.apache.log4j.plugins.PluginRegistry;
+import org.apache.log4j.scheduler.Scheduler;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ A <code>LoggerRepository</code> is used to create and retrieve
+ <code>Loggers</code>. The relation between loggers in a repository
+ depends on the repository but typically loggers are arranged in a
+ named hierarchy.
+
+ <p>In addition to the creational methods, a
+ <code>LoggerRepository</code> can be queried for existing loggers,
+ can act as a point of registry for events related to loggers.
+
+ @author Ceki Gülcü
+ @author Mark Womack
+ @author Curt Arnold
+ @since 1.3 */
+public interface LoggerRepositoryEx extends LoggerRepository {
+ /**
+ Add a {@link LoggerRepositoryEventListener} to the repository. The
+ listener will be called when repository events occur.
+ @param listener event listener, may not be null.
+ @since 1.3*/
+ void addLoggerRepositoryEventListener(
+ LoggerRepositoryEventListener listener);
+
+ /**
+ Remove a {@link LoggerRepositoryEventListener} from the repository.
+ @param listener listener.
+ @since 1.3*/
+ void removeLoggerRepositoryEventListener(
+ LoggerRepositoryEventListener listener);
+
+ /**
+ Add a {@link LoggerEventListener} to the repository. The listener
+ will be called when repository events occur.
+ @param listener listener, may not be null.
+ @since 1.3*/
+ void addLoggerEventListener(LoggerEventListener listener);
+
+ /**
+ Remove a {@link LoggerEventListener} from the repository.
+ @param listener listener, may not be null.
+ @since 1.3*/
+ void removeLoggerEventListener(LoggerEventListener listener);
+
+ /**
+ * Get the name of this logger repository.
+ * @return name, may not be null.
+ * @since 1.3
+ */
+ String getName();
+
+ /**
+ * A logger repository is a named entity.
+ * @param repoName new name, may not be null.
+ * @since 1.3
+ */
+ void setName(String repoName);
+
+ /**
+ * Is the current configuration of the repository in its original (pristine)
+ * state?
+ * @return true if repository is in original state.
+ *
+ * @since 1.3
+ */
+ boolean isPristine();
+
+ /**
+ * Set the pristine flag.
+ * @param state state
+ * @see #isPristine
+ * @since 1.3
+ */
+ void setPristine(boolean state);
+
+ /**
+ Requests that a appender removed event be sent to any registered
+ {@link LoggerEventListener}.
+ @param logger The logger from which the appender was removed.
+ @param appender The appender removed from the logger.
+ @since 1.3*/
+ void fireRemoveAppenderEvent(Category logger, Appender appender);
+
+ /**
+ Requests that a level changed event be sent to any registered
+ {@link LoggerEventListener}.
+ @param logger The logger which changed levels.
+ @since 1.3*/
+ void fireLevelChangedEvent(Logger logger);
+
+ /**
+ Requests that a configuration changed event be sent to any registered
+ {@link LoggerRepositoryEventListener}.
+ @since 1.3*/
+ void fireConfigurationChangedEvent();
+
+ /**
+ * Return the PluginRegisty for this LoggerRepository.
+ * @return plug in registry.
+ * @since 1.3
+ */
+ PluginRegistry getPluginRegistry();
+
+ /**
+ * Return the {@link Scheduler} for this LoggerRepository.
+ * @return scheduler.
+ * @since 1.3
+ */
+ Scheduler getScheduler();
+
+ /**
+ * Get the properties specific for this repository.
+ * @return property map.
+ * @since 1.3
+ */
+ Map getProperties();
+
+ /**
+ * Get the property of this repository.
+ * @param key property key.
+ * @return key value or null if not set.
+ * @since 1.3
+ */
+ String getProperty(String key);
+
+ /**
+ * Set a property of this repository.
+ * @param key key, may not be null.
+ * @param value new value, if null, property will be removed.
+ * @since 1.3
+ */
+ void setProperty(String key, String value);
+
+ /**
+ * Errors which cannot be logged, go to the error list
+ *
+ * @return List
+ */
+ List getErrorList();
+
+ /**
+ * Errors which cannot be logged, go to the error list
+ *
+ * @param errorItem an ErrorItem to add to the error list
+ */
+ void addErrorItem(ErrorItem errorItem);
+
+ /**
+ * A LoggerRepository can also act as a store for various objects used
+ * by log4j components.
+ *
+ * @param key key, may not be null.
+ * @return The object stored under 'key'.
+ * @since 1.3
+ */
+ Object getObject(String key);
+
+ /**
+ * Store an object under 'key'. If no object can be found, null is returned.
+ *
+ * @param key key, may not be null.
+ * @param value value, may be null.
+ */
+ void putObject(String key, Object value);
+}
Modified: logging/log4j/trunk/src/java/org/apache/log4j/spi/LoggingEvent.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/spi/LoggingEvent.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/spi/LoggingEvent.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/spi/LoggingEvent.java Sun Jan 1 21:10:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
+ * Copyright 1999,2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -549,7 +549,10 @@
}
if (logger != null) {
- properties.putAll(logger.getLoggerRepository().getProperties());
+ LoggerRepository repo = logger.getLoggerRepository();
+ if (repo instanceof LoggerRepositoryEx) {
+ properties.putAll(((LoggerRepositoryEx) repo).getProperties());
+ }
}
}
}
@@ -583,7 +586,10 @@
// if still not found try, the properties in the logger repository
if (logger != null) {
- value = logger.getLoggerRepository().getProperty(key);
+ LoggerRepository repo = logger.getLoggerRepository();
+ if (repo instanceof LoggerRepositoryEx) {
+ value = ((LoggerRepositoryEx) repo).getProperty(key);
+ }
}
return value;
Modified: logging/log4j/trunk/src/java/org/apache/log4j/spi/RootCategory.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/spi/RootCategory.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/spi/RootCategory.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/spi/RootCategory.java Sun Jan 1 21:10:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
+ * Copyright 1999,2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,7 +16,8 @@
package org.apache.log4j.spi;
-import org.apache.log4j.*;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
// Contibutors: Mathias Bogaert
@@ -51,8 +52,8 @@
@since 0.8.3 */
public final void setLevel(Level level) {
if (level == null) {
- if (repository != null) {
- repository.addErrorItem(
+ if (repository instanceof LoggerRepositoryEx) {
+ ((LoggerRepositoryEx) repository).addErrorItem(
new ErrorItem(
"You have tried to set a null level to root.", new Exception()));
}
Modified: logging/log4j/trunk/src/java/org/apache/log4j/spi/RootLogger.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/spi/RootLogger.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/spi/RootLogger.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/spi/RootLogger.java Sun Jan 1 21:10:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
+ * Copyright 1999,2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,7 +16,8 @@
package org.apache.log4j.spi;
-import org.apache.log4j.*;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
// Contibutors: Mathias Bogaert
@@ -58,8 +59,8 @@
@since 0.8.3 */
public final void setLevel(Level level) {
if (level == null) {
- if (repository != null) {
- repository.addErrorItem(
+ if (repository instanceof LoggerRepositoryEx) {
+ ((LoggerRepositoryEx) repository).addErrorItem(
new ErrorItem(
"You have tried to set a null level to root.", new Exception()));
}
Modified: logging/log4j/trunk/src/java/org/apache/log4j/watchdog/TimedURLWatchdog.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/watchdog/TimedURLWatchdog.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/watchdog/TimedURLWatchdog.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/watchdog/TimedURLWatchdog.java Sun Jan 1 21:10:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
+ * Copyright 1999,2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,7 +19,8 @@
import java.net.URL;
import org.apache.log4j.scheduler.Job;
-import org.apache.log4j.watchdog.WatchdogSkeleton;
+import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.spi.LoggerRepositoryEx;
/**
Implements functionality of a watchdog that periodically checks a URL for
@@ -133,10 +134,15 @@
// get the current modification time of the watched source
lastModTime = getModificationTime();
-
- // schedule this Wathdog as a Job with the Scheduler
- getLoggerRepository().getScheduler().schedule(this,
+
+ LoggerRepository repo = getLoggerRepository();
+ if (repo instanceof LoggerRepositoryEx) {
+ ((LoggerRepositoryEx) repo).getScheduler().schedule(this,
System.currentTimeMillis() + interval, interval);
+ } else {
+ this.getLogger().error("{} watchdog requires repository that supports LoggerRepositoryEx",
+ this.getName());
+ }
}
/**
@@ -144,6 +150,9 @@
* simply removes the watchdog from the Scheduler.
*/
public void shutdown() {
- getLoggerRepository().getScheduler().delete(this);
+ LoggerRepository repo = getLoggerRepository();
+ if (repo instanceof LoggerRepositoryEx) {
+ ((LoggerRepositoryEx) repo).getScheduler().delete(this);
+ }
}
}
Modified: logging/log4j/trunk/tests/src/java/org/apache/log4j/db/FullCycleDBTest.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/tests/src/java/org/apache/log4j/db/FullCycleDBTest.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/tests/src/java/org/apache/log4j/db/FullCycleDBTest.java (original)
+++ logging/log4j/trunk/tests/src/java/org/apache/log4j/db/FullCycleDBTest.java Sun Jan 1 21:10:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
+ * Copyright 1999,2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -52,8 +52,8 @@
extends TestCase {
Vector witnessEvents;
- LoggerRepository lrWrite;
- LoggerRepository lrRead;
+ Hierarchy lrWrite;
+ Hierarchy lrRead;
String appendConfigFile = null;
String readConfigFile = null;
Modified: logging/log4j/trunk/tests/src/java/org/apache/log4j/joran/InterpreterTest.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/tests/src/java/org/apache/log4j/joran/InterpreterTest.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/tests/src/java/org/apache/log4j/joran/InterpreterTest.java (original)
+++ logging/log4j/trunk/tests/src/java/org/apache/log4j/joran/InterpreterTest.java Sun Jan 1 21:10:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
+ * Copyright 1999,2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -56,6 +56,7 @@
import org.apache.log4j.rolling.FixedWindowRollingPolicy;
import org.apache.log4j.spi.ErrorItem;
import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.spi.LoggerRepositoryEx;
import org.xml.sax.SAXParseException;
import java.util.HashMap;
@@ -358,7 +359,7 @@
Appender appender = (Appender) appenderBag.get("A1");
PatternLayout pl = (PatternLayout) appender.getLayout();
- Map ruleRegistry = (Map) repository.getObject(PatternLayout.PATTERN_RULE_REGISTRY);
+ Map ruleRegistry = (Map) ((LoggerRepositoryEx) repository).getObject(PatternLayout.PATTERN_RULE_REGISTRY);
assertEquals("org.apache.log4j.toto", ruleRegistry.get("toto"));
}
Modified: logging/log4j/trunk/tests/src/java/org/apache/log4j/plugins/PluginTestCase.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/tests/src/java/org/apache/log4j/plugins/PluginTestCase.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/tests/src/java/org/apache/log4j/plugins/PluginTestCase.java (original)
+++ logging/log4j/trunk/tests/src/java/org/apache/log4j/plugins/PluginTestCase.java Sun Jan 1 21:10:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
+ * Copyright 1999,2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -27,6 +27,7 @@
import org.apache.log4j.Logger;
import org.apache.log4j.SimpleLayout;
import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.spi.LoggerRepositoryEx;
import org.apache.log4j.spi.RootLogger;
import org.apache.log4j.util.Compare;
@@ -52,7 +53,7 @@
}
public void setUp() {
- pluginRegistry = LogManager.getLoggerRepository().getPluginRegistry();
+ pluginRegistry = ((LoggerRepositoryEx) LogManager.getLoggerRepository()).getPluginRegistry();
// delete the output file if they happen to exist
File file = new File(getOutputFile("test1"));
Modified: logging/log4j/trunk/tests/src/java/org/apache/log4j/watchdog/FileWatchdogTestCase.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/tests/src/java/org/apache/log4j/watchdog/FileWatchdogTestCase.java?rev=365293&r1=365292&r2=365293&view=diff
==============================================================================
--- logging/log4j/trunk/tests/src/java/org/apache/log4j/watchdog/FileWatchdogTestCase.java (original)
+++ logging/log4j/trunk/tests/src/java/org/apache/log4j/watchdog/FileWatchdogTestCase.java Sun Jan 1 21:10:42 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
+ * Copyright 1999,2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -29,6 +29,7 @@
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.spi.Configurator;
+import org.apache.log4j.spi.LoggerRepositoryEx;
import org.apache.log4j.joran.JoranConfigurator;
@@ -139,7 +140,7 @@
watchdog.setURL(configURL);
watchdog.setInterval(2000);
watchdog.setConfigurator(JoranConfigurator.class.getName());
- LogManager.getLoggerRepository().getPluginRegistry().addPlugin(watchdog);
+ ((LoggerRepositoryEx) LogManager.getLoggerRepository()).getPluginRegistry().addPlugin(watchdog);
watchdog.activateOptions();
// output some test messages
@@ -194,7 +195,7 @@
watchdog.setURL(configURL);
watchdog.setInterval(2000);
watchdog.setConfigurator(PropertyConfigurator.class.getName());
- LogManager.getLoggerRepository().getPluginRegistry().addPlugin(watchdog);
+ ((LoggerRepositoryEx) LogManager.getLoggerRepository()).getPluginRegistry().addPlugin(watchdog);
watchdog.activateOptions();
// output some test messages
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org