ceki 2003/03/18 12:28:19
Modified: src/java/org/apache/log4j PropertyConfigurator.java
Log:
Correct Jalopy formatting
Revision Changes Path
1.58 +298 -311
jakarta-log4j/src/java/org/apache/log4j/PropertyConfigurator.java
Index: PropertyConfigurator.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/PropertyConfigurator.java,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -r1.57 -r1.58
--- PropertyConfigurator.java 18 Mar 2003 19:46:30 -0000 1.57
+++ PropertyConfigurator.java 18 Mar 2003 20:28:19 -0000 1.58
@@ -77,50 +77,46 @@
/**
- * Allows the configuration of log4j from an external file. See <b>[EMAIL
PROTECTED]
- * #doConfigure(String, LoggerRepository)}</b> for the expected format.
- *
- * <p>
- * It is sometimes useful to see how log4j is reading configuration files. You
- * can enable log4j internal logging by defining the <b>log4j.debug</b>
- * variable.
- * </p>
- *
- * <P>
- * As of log4j version 0.8.5, at class initialization time class, the file
- * <b>log4j.properties</b> will be searched from the search path used to load
- * classes. If the file can be found, then it will be fed to the [EMAIL PROTECTED]
- * PropertyConfigurator#configure(java.net.URL)} method.
- * </p>
- *
- * <p>
- * The <code>PropertyConfigurator</code> does not handle the advanced
- * configuration features supported by the [EMAIL PROTECTED]
- * org.apache.log4j.xml.DOMConfigurator DOMConfigurator} such as support for
- * [EMAIL PROTECTED] org.apache.log4j.spi.Filter Filters}, custom [EMAIL PROTECTED]
- * org.apache.log4j.spi.ErrorHandler ErrorHandlers}, nested appenders such as
- * the [EMAIL PROTECTED] org.apache.log4j.AsyncAppender AsyncAppender}, etc.
- * </p>
- *
- * <p>
- * All option <em>values</em> admit variable substitution. The syntax of
- * variable substitution is similar to that of Unix shells. The string
- * between an opening <b>"${"</b> and closing <b>"}"</b>
- * is interpreted as a key. The value of the substituted variable can be
- * defined as a system property or in the configuration file itself. The
- * value of the key is first searched in the system properties, and if not
- * found there, it is then searched in the configuration file being parsed.
- * The corresponding value replaces the ${variableName} sequence. For
- * example, if <code>java.home</code> system property is set to
- * <code>/home/xyz</code>, then every occurrence of the sequence
- * <code>${java.home}</code> will be interpreted as <code>/home/xyz</code>.
- * </p>
- *
- * @author Ceki Gülcü
- * @author Anders Kristensen
- *
- * @since 0.8.1
- */
+ Allows the configuration of log4j from an external file. See
+ <b>[EMAIL PROTECTED] #doConfigure(String, LoggerRepository)}</b> for the
+ expected format.
+
+ <p>It is sometimes useful to see how log4j is reading configuration
+ files. You can enable log4j internal logging by defining the
+ <b>log4j.debug</b> variable.
+
+ <P>As of log4j version 0.8.5, at class initialization time class,
+ the file <b>log4j.properties</b> will be searched from the search
+ path used to load classes. If the file can be found, then it will
+ be fed to the [EMAIL PROTECTED] PropertyConfigurator#configure(java.net.URL)}
+ method.
+
+ <p>The <code>PropertyConfigurator</code> does not handle the
+ advanced configuration features supported by the [EMAIL PROTECTED]
+ org.apache.log4j.xml.DOMConfigurator DOMConfigurator} such as
+ support for [EMAIL PROTECTED] org.apache.log4j.spi.Filter Filters}, custom
+ [EMAIL PROTECTED] org.apache.log4j.spi.ErrorHandler ErrorHandlers}, nested
+ appenders such as the [EMAIL PROTECTED] org.apache.log4j.AsyncAppender
+ AsyncAppender}, etc.
+
+ <p>All option <em>values</em> admit variable substitution. The
+ syntax of variable substitution is similar to that of Unix
+ shells. The string between an opening <b>"${"</b> and
+ closing <b>"}"</b> is interpreted as a key. The value of
+ the substituted variable can be defined as a system property or in
+ the configuration file itself. The value of the key is first
+ searched in the system properties, and if not found there, it is
+ then searched in the configuration file being parsed. The
+ corresponding value replaces the ${variableName} sequence. For
+ example, if <code>java.home</code> system property is set to
+ <code>/home/xyz</code>, then every occurrence of the sequence
+ <code>${java.home}</code> will be interpreted as
+ <code>/home/xyz</code>.
+
+
+ @author Ceki Gülcü
+ @author Anders Kristensen
+ @since 0.8.1 */
public class PropertyConfigurator implements Configurator {
static final String CATEGORY_PREFIX = "log4j.category.";
static final String LOGGER_PREFIX = "log4j.logger.";
@@ -132,224 +128,210 @@
static final String RENDERER_PREFIX = "log4j.renderer.";
static final String THRESHOLD_PREFIX = "log4j.threshold";
- /**
- * Key for specifying the [EMAIL PROTECTED] org.apache.log4j.spi.LoggerFactory
- * LoggerFactory}. Currently set to "<code>log4j.loggerFactory</code>".
- */
+ /** Key for specifying the [EMAIL PROTECTED] org.apache.log4j.spi.LoggerFactory
+ LoggerFactory}. Currently set to "<code>log4j.loggerFactory</code>". */
public static final String LOGGER_FACTORY_KEY = "log4j.loggerFactory";
private static final String INTERNAL_ROOT_NAME = "root";
/**
- * Used internally to keep track of configured appenders.
+ Used internally to keep track of configured appenders.
*/
protected Hashtable registry = new Hashtable(11);
protected LoggerFactory loggerFactory = new DefaultCategoryFactory();
/**
- * Read configuration from a file. <b>The existing configuration is not
- * cleared nor reset.</b> If you require a different behavior, then call
- * [EMAIL PROTECTED] LogManager#resetConfiguration resetConfiguration} method
before
- * calling <code>doConfigure</code>.
- *
- * <p>
- * The configuration file consists of statements in the format
- * <code>key=value</code>. The syntax of different configuration elements
- * are discussed below.
- * </p>
- * <h3>
- *
- * <p>
- * The repository-wide threshold filters logging requests by level
- * regardless of logger. The syntax is:
- * <pre>
- * log4j.threshold=[level]
- * </pre>
- * </p>
- *
- * <p>
- * The level value can consist of the string values OFF, FATAL, ERROR, WARN,
- * INFO, DEBUG, ALL or a <em>custom level</em> value. A custom level value
- * can be specified in the form level#classname. By default the
- * repository-wide threshold is set to the lowest possible value, namely
- * the level <code>ALL</code>.
- * </p>
- * <h3>
- *
- * <p>
- * Appender configuration syntax is:
- * <pre>
- * # For appender named <i>appenderName</i>, set its class.
- * # Note: The appender name can contain dots.
- * log4j.appender.appenderName=fully.qualified.name.of.appender.class
- * # Set appender specific options.
- * log4j.appender.appenderName.option1=value1
- * ...
- * log4j.appender.appenderName.optionN=valueN
- * </pre>
- * For each named appender you can configure its [EMAIL PROTECTED] Layout}. The
syntax
- * for configuring an appender's layout is:
- * <pre>
- * log4j.appender.appenderName.layout=fully.qualified.name.of.layout.class
- * log4j.appender.appenderName.layout.option1=value1
- * ....
- * log4j.appender.appenderName.layout.optionN=valueN
- * </pre>
- * </p>
- * <h3>
- *
- * <p>
- * The syntax for configuring the root logger is:
- * <pre>
- * log4j.rootLogger=[level], appenderName, appenderName, ...
- * </pre>
- * </p>
- *
- * <p>
- * This syntax means that an optional <em>level</em> can be supplied
- * followed by appender names separated by commas.
- * </p>
- *
- * <p>
- * The level value can consist of the string values OFF, FATAL, ERROR, WARN,
- * INFO, DEBUG, ALL or a <em>custom level</em> value. A custom level value
- * can be specified in the form <code>level#classname</code>.
- * </p>
- *
- * <p>
- * If a level value is specified, then the root level is set to the
- * corresponding level. If no level value is specified, then the root
- * level remains untouched.
- * </p>
- *
- * <p>
- * The root logger can be assigned multiple appenders.
- * </p>
- *
- * <p>
- * Each <i>appenderName</i> (separated by commas) will be added to the root
- * logger. The named appender is defined using the appender syntax defined
- * above.
- * </p>
- *
- * <p>
- * For non-root categories the syntax is almost the same:
- * <pre>
- * log4j.logger.logger_name=[level|INHERITED|NULL], appenderName, appenderName,
...
- * </pre>
- * </p>
- *
- * <p>
- * The meaning of the optional level value is discussed above in relation to
- * the root logger. In addition however, the value INHERITED can be
- * specified meaning that the named logger should inherit its level from
- * the logger hierarchy.
- * </p>
- *
- * <p>
- * If no level value is supplied, then the level of the named logger remains
- * untouched.
- * </p>
- *
- * <p>
- * By default categories inherit their level from the hierarchy. However, if
- * you set the level of a logger and later decide that that logger should
- * inherit its level, then you should specify INHERITED as the value for
- * the level value. NULL is a synonym for INHERITED.
- * </p>
- *
- * <p>
- * Similar to the root logger syntax, each <i>appenderName</i> (separated by
- * commas) will be attached to the named logger.
- * </p>
- *
- * <p>
- * See the <a href="../../../../manual.html#additivity">appender additivity
- * rule</a> in the user manual for the meaning of the
- * <code>additivity</code> flag.
- * </p>
- * <h3>
- * You can customize the way message objects of a given type are converted
- * to String before being logged. This is done by specifying an [EMAIL PROTECTED]
- * org.apache.log4j.or.ObjectRenderer ObjectRenderer} for the object type
- * would like to customize.
- *
- * <p>
- * The syntax is:
- * <pre>
- *
log4j.renderer.fully.qualified.name.of.rendered.class=fully.qualified.name.of.rendering.class
- * </pre>
- * As in,
- * <pre>
- * log4j.renderer.my.Fruit=my.FruitRenderer
- * </pre>
- * </p>
- * <h3>
- * The usage of custom logger factories is discouraged and no longer
- * documented.
- * <h3>
- *
- * <p>
- * An example configuration is given below. Other configuration file
- * examples are given in the <code>examples</code> folder.
- * <pre>
- * # Set options for appender named "A1".
- * # Appender "A1" will be a SyslogAppender
- * log4j.appender.A1=org.apache.log4j.net.SyslogAppender
- * # The syslog daemon resides on www.abc.net
- * log4j.appender.A1.SyslogHost=www.abc.net
- * # A1's layout is a PatternLayout, using the conversion pattern
- * # <b>%r %-5p %c{2} %M.%L %x - %m\n</b>. Thus, the log output will
- * # include # the relative time since the start of the application in
- * # milliseconds, followed by the level of the log request,
- * # followed by the two rightmost components of the logger name,
- * # followed by the callers method name, followed by the line number,
- * # the nested disgnostic context and finally the message itself.
- * # Refer to the documentation of [EMAIL PROTECTED] PatternLayout} for further
information
- * # on the syntax of the ConversionPattern key.
- * log4j.appender.A1.layout=org.apache.log4j.PatternLayout
- * log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %c{2} %M.%L %x - %m\n
- * # Set options for appender named "A2"
- * # A2 should be a RollingFileAppender, with maximum file size of 10 MB
- * # using at most one backup file. A2's layout is TTCC, using the
- * # ISO8061 date format with context printing enabled.
- * log4j.appender.A2=org.apache.log4j.RollingFileAppender
- * log4j.appender.A2.MaxFileSize=10MB
- * log4j.appender.A2.MaxBackupIndex=1
- * log4j.appender.A2.layout=org.apache.log4j.TTCCLayout
- * log4j.appender.A2.layout.ContextPrinting=enabled
- * log4j.appender.A2.layout.DateFormat=ISO8601
- * # Root logger set to DEBUG using the A2 appender defined above.
- * log4j.rootLogger=DEBUG, A2
- * # Logger definitions:
- * # The SECURITY logger inherits is level from root. However, it's output
- * # will go to A1 appender defined above. It's additivity is non-cumulative.
- * log4j.logger.SECURITY=INHERIT, A1
- * log4j.additivity.SECURITY=false
- * # Only warnings or above will be logged for the logger "SECURITY.access".
- * # Output will go to A1.
- * log4j.logger.SECURITY.access=WARN
- * # The logger "class.of.the.day" inherits its level from the
- * # logger hierarchy. Output will go to the appender's of the root
- * # logger, A2 in this case.
- * log4j.logger.class.of.the.day=INHERIT
- * </pre>
- * </p>
- *
- * <p>
- * Refer to the <b>setOption</b> method in each Appender and Layout for
- * class specific options.
- * </p>
- *
- * <p>
- * Use the <code>#</code> or <code>!</code> characters at the beginning of a
- * line for comments.
- * </p>
- *
- * <p></p>
- *
- * @param configFileName The name of the configuration file where the
- * configuration information is stored.
- */
+ Read configuration from a file. <b>The existing configuration is
+ not cleared nor reset.</b> If you require a different behavior,
+ then call [EMAIL PROTECTED] LogManager#resetConfiguration
+ resetConfiguration} method before calling
+ <code>doConfigure</code>.
+
+ <p>The configuration file consists of statements in the format
+ <code>key=value</code>. The syntax of different configuration
+ elements are discussed below.
+
+ <h3>Repository-wide threshold</h3>
+
+ <p>The repository-wide threshold filters logging requests by level
+ regardless of logger. The syntax is:
+
+ <pre>
+ log4j.threshold=[level]
+ </pre>
+
+ <p>The level value can consist of the string values OFF, FATAL,
+ ERROR, WARN, INFO, DEBUG, ALL or a <em>custom level</em> value. A
+ custom level value can be specified in the form
+ level#classname. By default the repository-wide threshold is set
+ to the lowest possible value, namely the level <code>ALL</code>.
+ </p>
+
+
+ <h3>Appender configuration</h3>
+
+ <p>Appender configuration syntax is:
+ <pre>
+ # For appender named <i>appenderName</i>, set its class.
+ # Note: The appender name can contain dots.
+ log4j.appender.appenderName=fully.qualified.name.of.appender.class
+
+ # Set appender specific options.
+ log4j.appender.appenderName.option1=value1
+ ...
+ log4j.appender.appenderName.optionN=valueN
+ </pre>
+
+ For each named appender you can configure its [EMAIL PROTECTED] Layout}. The
+ syntax for configuring an appender's layout is:
+ <pre>
+ log4j.appender.appenderName.layout=fully.qualified.name.of.layout.class
+ log4j.appender.appenderName.layout.option1=value1
+ ....
+ log4j.appender.appenderName.layout.optionN=valueN
+ </pre>
+
+ <h3>Configuring loggers</h3>
+
+ <p>The syntax for configuring the root logger is:
+ <pre>
+ log4j.rootLogger=[level], appenderName, appenderName, ...
+ </pre>
+
+ <p>This syntax means that an optional <em>level</em> can be
+ supplied followed by appender names separated by commas.
+
+ <p>The level value can consist of the string values OFF, FATAL,
+ ERROR, WARN, INFO, DEBUG, ALL or a <em>custom level</em> value. A
+ custom level value can be specified in the form
+ <code>level#classname</code>.
+
+ <p>If a level value is specified, then the root level is set
+ to the corresponding level. If no level value is specified,
+ then the root level remains untouched.
+
+ <p>The root logger can be assigned multiple appenders.
+
+ <p>Each <i>appenderName</i> (separated by commas) will be added to
+ the root logger. The named appender is defined using the
+ appender syntax defined above.
+
+ <p>For non-root categories the syntax is almost the same:
+ <pre>
+ log4j.logger.logger_name=[level|INHERITED|NULL], appenderName, appenderName, ...
+ </pre>
+
+ <p>The meaning of the optional level value is discussed above
+ in relation to the root logger. In addition however, the value
+ INHERITED can be specified meaning that the named logger should
+ inherit its level from the logger hierarchy.
+
+ <p>If no level value is supplied, then the level of the
+ named logger remains untouched.
+
+ <p>By default categories inherit their level from the
+ hierarchy. However, if you set the level of a logger and later
+ decide that that logger should inherit its level, then you should
+ specify INHERITED as the value for the level value. NULL is a
+ synonym for INHERITED.
+
+ <p>Similar to the root logger syntax, each <i>appenderName</i>
+ (separated by commas) will be attached to the named logger.
+
+ <p>See the <a href="../../../../manual.html#additivity">appender
+ additivity rule</a> in the user manual for the meaning of the
+ <code>additivity</code> flag.
+
+ <h3>ObjectRenderers</h3>
+
+ You can customize the way message objects of a given type are
+ converted to String before being logged. This is done by
+ specifying an [EMAIL PROTECTED] org.apache.log4j.or.ObjectRenderer
ObjectRenderer}
+ for the object type would like to customize.
+
+ <p>The syntax is:
+
+ <pre>
+
log4j.renderer.fully.qualified.name.of.rendered.class=fully.qualified.name.of.rendering.class
+ </pre>
+
+ As in,
+ <pre>
+ log4j.renderer.my.Fruit=my.FruitRenderer
+ </pre>
+
+ <h3>Logger Factories</h3>
+
+ The usage of custom logger factories is discouraged and no longer
+ documented.
+
+ <h3>Example</h3>
+
+ <p>An example configuration is given below. Other configuration
+ file examples are given in the <code>examples</code> folder.
+
+ <pre>
+
+ # Set options for appender named "A1".
+ # Appender "A1" will be a SyslogAppender
+ log4j.appender.A1=org.apache.log4j.net.SyslogAppender
+
+ # The syslog daemon resides on www.abc.net
+ log4j.appender.A1.SyslogHost=www.abc.net
+
+ # A1's layout is a PatternLayout, using the conversion pattern
+ # <b>%r %-5p %c{2} %M.%L %x - %m\n</b>. Thus, the log output will
+ # include # the relative time since the start of the application in
+ # milliseconds, followed by the level of the log request,
+ # followed by the two rightmost components of the logger name,
+ # followed by the callers method name, followed by the line number,
+ # the nested disgnostic context and finally the message itself.
+ # Refer to the documentation of [EMAIL PROTECTED] PatternLayout} for further
information
+ # on the syntax of the ConversionPattern key.
+ log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+ log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %c{2} %M.%L %x - %m\n
+
+ # Set options for appender named "A2"
+ # A2 should be a RollingFileAppender, with maximum file size of 10 MB
+ # using at most one backup file. A2's layout is TTCC, using the
+ # ISO8061 date format with context printing enabled.
+ log4j.appender.A2=org.apache.log4j.RollingFileAppender
+ log4j.appender.A2.MaxFileSize=10MB
+ log4j.appender.A2.MaxBackupIndex=1
+ log4j.appender.A2.layout=org.apache.log4j.TTCCLayout
+ log4j.appender.A2.layout.ContextPrinting=enabled
+ log4j.appender.A2.layout.DateFormat=ISO8601
+
+ # Root logger set to DEBUG using the A2 appender defined above.
+ log4j.rootLogger=DEBUG, A2
+
+ # Logger definitions:
+ # The SECURITY logger inherits is level from root. However, it's output
+ # will go to A1 appender defined above. It's additivity is non-cumulative.
+ log4j.logger.SECURITY=INHERIT, A1
+ log4j.additivity.SECURITY=false
+
+ # Only warnings or above will be logged for the logger "SECURITY.access".
+ # Output will go to A1.
+ log4j.logger.SECURITY.access=WARN
+
+
+ # The logger "class.of.the.day" inherits its level from the
+ # logger hierarchy. Output will go to the appender's of the root
+ # logger, A2 in this case.
+ log4j.logger.class.of.the.day=INHERIT
+ </pre>
+
+ <p>Refer to the <b>setOption</b> method in each Appender and
+ Layout for class specific options.
+
+ <p>Use the <code>#</code> or <code>!</code> characters at the
+ beginning of a line for comments.
+
+ <p>
+ @param configFileName The name of the configuration file where the
+ configuration information is stored.
+
+ */
public void doConfigure(String configFileName, LoggerRepository hierarchy) {
Properties props = new Properties();
@@ -377,9 +359,9 @@
}
/**
- * Read configuration options from url <code>configURL</code>.
- *
- * @since 0.8.2
+ Read configuration options from url <code>configURL</code>.
+
+ @since 0.8.2
*/
public static void configure(java.net.URL configURL) {
new PropertyConfigurator().doConfigure(
@@ -387,35 +369,38 @@
}
/**
- * Read configuration options from <code>properties</code>. See [EMAIL PROTECTED]
- * #doConfigure(String, LoggerRepository)} for the expected format.
- */
+ Read configuration options from <code>properties</code>.
+
+ See [EMAIL PROTECTED] #doConfigure(String, LoggerRepository)} for the expected
format.
+ */
public static void configure(Properties properties) {
new PropertyConfigurator().doConfigure(
properties, LogManager.getLoggerRepository());
}
/**
- * Like [EMAIL PROTECTED] #configureAndWatch(String, long)} except that the
default
- * delay as defined by [EMAIL PROTECTED] FileWatchdog#DEFAULT_DELAY} is used.
- *
- * @param configFilename A file in key=value format.
- */
+ Like [EMAIL PROTECTED] #configureAndWatch(String, long)} except that the
+ default delay as defined by [EMAIL PROTECTED] FileWatchdog#DEFAULT_DELAY} is
+ used.
+
+ @param configFilename A file in key=value format.
+
+ */
public static void configureAndWatch(String configFilename) {
configureAndWatch(configFilename, FileWatchdog.DEFAULT_DELAY);
}
/**
- * Read the configuration file <code>configFilename</code> if it exists.
- * Moreover, a thread will be created that will periodically check if
- * <code>configFilename</code> has been created or modified. The period is
- * determined by the <code>delay</code> argument. If a change or file
- * creation is detected, then <code>configFilename</code> is read to
- * configure log4j.
- *
- * @param configFilename A file in key=value format.
- * @param delay The delay in milliseconds to wait between each check.
- */
+ Read the configuration file <code>configFilename</code> if it
+ exists. Moreover, a thread will be created that will periodically
+ check if <code>configFilename</code> has been created or
+ modified. The period is determined by the <code>delay</code>
+ argument. If a change or file creation is detected, then
+ <code>configFilename</code> is read to configure log4j.
+
+ @param configFilename A file in key=value format.
+ @param delay The delay in milliseconds to wait between each check.
+ */
public static void configureAndWatch(String configFilename, long delay) {
PropertyWatchdog pdog = new PropertyWatchdog(configFilename);
pdog.setDelay(delay);
@@ -423,9 +408,10 @@
}
/**
- * Read configuration options from <code>properties</code>. See [EMAIL PROTECTED]
- * #doConfigure(String, LoggerRepository)} for the expected format.
- */
+ Read configuration options from <code>properties</code>.
+
+ See [EMAIL PROTECTED] #doConfigure(String, LoggerRepository)} for the expected
format.
+ */
public void doConfigure(Properties properties, LoggerRepository hierarchy) {
String value = properties.getProperty(LogLog.DEBUG_KEY);
@@ -463,7 +449,7 @@
}
/**
- * Read configuration options from url <code>configURL</code>.
+ Read configuration options from url <code>configURL</code>.
*/
public void doConfigure(java.net.URL configURL, LoggerRepository hierarchy) {
Properties props = new Properties();
@@ -487,13 +473,14 @@
// --------------------------------------------------------------------------
/**
- * Check the provided <code>Properties</code> object for a [EMAIL PROTECTED]
- * org.apache.log4j.spi.LoggerFactory LoggerFactory} entry specified by
- * [EMAIL PROTECTED] #LOGGER_FACTORY_KEY}. If such an entry exists, an attempt is
- * made to create an instance using the default constructor. This instance
- * is used for subsequent Category creations within this configurator.
- *
- * @see #parseCatsAndRenderers
+ Check the provided <code>Properties</code> object for a
+ [EMAIL PROTECTED] org.apache.log4j.spi.LoggerFactory LoggerFactory}
+ entry specified by [EMAIL PROTECTED] #LOGGER_FACTORY_KEY}. If such an entry
+ exists, an attempt is made to create an instance using the default
+ constructor. This instance is used for subsequent Category creations
+ within this configurator.
+
+ @see #parseCatsAndRenderers
*/
protected void configureLoggerFactory(Properties props) {
String factoryClassName =
@@ -509,25 +496,26 @@
}
/*
- void configureOptionHandler(OptionHandler oh, String prefix,
- Properties props) {
- String[] options = oh.getOptionStrings();
- if(options == null)
- return;
- String value;
- for(int i = 0; i < options.length; i++) {
- value = OptionConverter.findAndSubst(prefix + options[i], props);
- LogLog.debug(
- "Option " + options[i] + "=[" + (value == null? "N/A" : value)+"].");
- // Some option handlers assume that null value are not passed to them.
- // So don't remove this check
- if(value != null) {
- oh.setOption(options[i], value);
- }
- }
- oh.activateOptions();
- }
- */
+ void configureOptionHandler(OptionHandler oh, String prefix,
+ Properties props) {
+ String[] options = oh.getOptionStrings();
+ if(options == null)
+ return;
+
+ String value;
+ for(int i = 0; i < options.length; i++) {
+ value = OptionConverter.findAndSubst(prefix + options[i], props);
+ LogLog.debug(
+ "Option " + options[i] + "=[" + (value == null? "N/A" : value)+"].");
+ // Some option handlers assume that null value are not passed to them.
+ // So don't remove this check
+ if(value != null) {
+ oh.setOption(options[i], value);
+ }
+ }
+ oh.activateOptions();
+ }
+ */
void configureRootCategory(Properties props, LoggerRepository hierarchy) {
String effectiveFrefix = ROOT_LOGGER_PREFIX;
String value = OptionConverter.findAndSubst(ROOT_LOGGER_PREFIX, props);
@@ -549,8 +537,8 @@
}
/**
- * Parse non-root elements, such non-root categories and renderers.
- */
+ Parse non-root elements, such non-root categories and renderers.
+ */
protected void parseCatsAndRenderers(
Properties props, LoggerRepository hierarchy) {
Enumeration enum = props.propertyNames();
@@ -587,7 +575,7 @@
}
/**
- * Parse the additivity option for a non-root category.
+ Parse the additivity option for a non-root category.
*/
void parseAdditivityForLogger(
Properties props, Logger cat, String loggerName) {
@@ -606,7 +594,7 @@
}
/**
- * This method must work for the root category as well.
+ This method must work for the root category as well.
*/
void parseCategory(
Properties props, Logger logger, String optionKey, String loggerName,
@@ -736,9 +724,8 @@
}
/**
- * Call [EMAIL PROTECTED] PropertyConfigurator#configure(String)} with the
- * <code>filename</code> to reconfigure log4j.
- */
+ Call [EMAIL PROTECTED] PropertyConfigurator#configure(String)} with the
+ <code>filename</code> to reconfigure log4j. */
public void doOnChange() {
new PropertyConfigurator().doConfigure(
filename, LogManager.getLoggerRepository());
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]