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/18 18:05:29 UTC

svn commit: r370187 [2/2] - in /logging/sandbox/log4j/log4jMini/trunk: ./ docs/ src/java/org/apache/log4j/ src/java/org/apache/log4j/examples/ src/java/org/apache/log4j/helpers/ src/java/org/apache/log4j/spi/ src/java/org/apache/log4j/test/

Modified: logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/PropertyConfigurator.java
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/PropertyConfigurator.java?rev=370187&r1=370186&r2=370187&view=diff
==============================================================================
--- logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/PropertyConfigurator.java (original)
+++ logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/PropertyConfigurator.java Wed Jan 18 09:05:18 2006
@@ -12,7 +12,7 @@
 
 package org.apache.log4j;
 
-import org.apache.log4j.Category;
+import org.apache.log4j.Logger;
 import org.apache.log4j.Priority;
 import org.apache.log4j.spi.OptionHandler;
 import org.apache.log4j.helpers.LogLog;
@@ -35,13 +35,14 @@
    files. You can enable log4j internal logging by defining the
    <b>log4j.debug</b> variable. 
 
-   <P>At the initialization of the Category class, the file
+   <P>At the initialization of the Logger 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 {@link PropertyConfigurator#configure(java.net.URL)} method.
 
 
    @author Ceki G&uuml;lc&uuml;
+  * @author <a href="mailto:ralph.curtis@gabrielsoftware.com">Ralph Curtis</a>
    @since log4jME 1.0
 */
 public class PropertyConfigurator {
@@ -51,11 +52,10 @@
    */
   protected Hashtable registry = new Hashtable(11);
   
-  static final String CATEGORY_PREFIX = "log4j.category.";
+  static final String LOGGER_PREFIX = "log4j.logger.";
   static final String ADDITIVITY_PREFIX = "log4j.additivity.";
-  static final String ROOT_CATEGORY_PREFIX = "log4j.rootCategory";
+  static final String ROOT_LOGGER_PREFIX = "log4j.rootLogger";
   static final String APPENDER_PREFIX = "log4j.appender.";  
-  static final String CATEGORY_FACTORY_KEY = "log4j.categoryFactory";
 
   static final private String INHERITED = "inherited";
   static final private String INTERNAL_ROOT_NAME = "root";
@@ -90,11 +90,11 @@
     log.appender.appenderName.layout.optionN=valueN
     </pre>
     
-    <h3>Configuring categories</h3>
+    <h3>Configuring Loggers</h3>
 
-    <p>The syntax for configuring the root category is:
+    <p>The syntax for configuring the root Logger is:
     <pre>
-      log4j.rootCategory=[FATAL|ERROR|WARN|INFO|DEBUG], appenderName, appenderName, ...
+      log4j.rootLogger=[FATAL|ERROR|WARN|INFO|DEBUG], appenderName, appenderName, ...
     </pre>
 
     <p>This syntax means that one of the strings values ERROR, WARN,
@@ -106,34 +106,34 @@
     priority.  If no priority value is specified, then the root
     priority remains untouched.
 
-    <p>The root category can be assigned multiple appenders.
+    <p>The root Logger can be assigned multiple appenders.
     
     <p>Each <i>appenderName</i> (seperated by commas) will be added to
-    the root category. The named appender is defined using the
+    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:
+    <p>For non-root Loggers the syntax is almost the same:
     <pre>
-    log4j.category.category_name=[INHERITED|FATAL|ERROR|WARN|INFO|DEBUG], appenderName, appenderName, ...
+    log4j.logger.logger_name=[INHERITED|FATAL|ERROR|WARN|INFO|DEBUG], appenderName, appenderName, ...
     </pre>
 
     <p>Thus, one of the usual priority values FATAL, ERROR, WARN,
     INFO, or DEBUG can be optionally specified. For any any of these
-    values the named category is assigned the corresponding
+    values the named Logger is assigned the corresponding
     priority. In addition however, the value INHERITED can be
-    optionally specified which means that named category should
-    inherit its priority from the category hierarchy.
+    optionally specified which means that named Logger should
+    inherit its priority from the Logger hierarchy.
 
     <p>If no priority value is supplied, then the priority of the
-    named category remains untouched.
+    named Logger remains untouched.
 
-    <p>By default categories inherit their priority from the
-    hierarchy. However, if you set the priority of a category and
-    later decide that that category should inherit its priority, then
+    <p>By default Loggers inherit their priority from the
+    hierarchy. However, if you set the priority of a Logger and
+    later decide that that Logger should inherit its priority, then
     you should specify INHERITED as the value for the priority value.
     
-    <p>Similar to the root category syntax, each <i>appenderName</i>
-    (seperated by commas) will be attached to the named category.
+    <p>Similar to the root Logger syntax, each <i>appenderName</i>
+    (seperated 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
@@ -142,7 +142,7 @@
     <h3>Example</h3>
 
     <p>An example configuration is given below. Other configuration
-    file examples are given in {@link org.apache.log4j.examples.Sort}
+    file examples are given in {org.apache.log4j.examples.Sort}
     class documentation.
 
     <pre>
@@ -158,7 +158,7 @@
     # <b>%-4r %-5p %c{2} - %m%n</b>. Thus, the log output will
     # include the relative time since the start of the application in
     # milliseconds, followed by the priority of the log request,
-    # followed by the two rightmost components of the category name
+    # followed by the two rightmost components of the Logger name
     # and finally the message itself.
     # Refer to the documentation of {@link PatternLayout} for further information
     # on the syntax of the ConversionPattern key.    
@@ -174,24 +174,24 @@
     log4j.appender.A2.layout=org.apache.log4j.PatternLayout
     log4j.appender.A2.layout.ConversionPattern=%-4r %-5p %c - %m%n
 
-    # Root category set to DEBUG using the A2 appender defined above.
-    log4j.rootCategory=DEBUG, A2
+    # Root Logger set to DEBUG using the A2 appender defined above.
+    log4j.rootLogger=DEBUG, A2
 
-    # Category definions:
-    # The SECURITY category inherits is priority from root. However, it's output
+    # Logger definions:
+    # The SECURITY Logger inherits is priority from root. However, it's output
     # will go to A1 appender defined above. It's additivity is non-cumulative.
-    log4j.category.SECURITY=INHERIT, A1
+    log4j.logger.SECURITY=INHERIT, A1
     log4j.additivity.SECURITY=false
 
-    # Only warnings or above will be logged for the category "SECURITY.access".
+    # Only warnings or above will be logged for the Logger "SECURITY.access".
     # Output will go to A1.
-    log4j.category.SECURITY.access=WARN
+    log4j.logger.SECURITY.access=WARN
 
     
-    # The category "class.of.the.day" inherits its priority from the
-    # category hierrarchy.  Output will go to the appender's of the root
-    # category, A2 in this case.
-    log4j.category.class.of.the.day=INHERIT
+    # The Logger "class.of.the.day" inherits its priority 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
@@ -229,7 +229,7 @@
   public 
   void configure(String configFilename) {
     new PropertyConfigurator().doConfigure(configFilename, 
-					   Category.defaultHierarchy);
+					   Logger.defaultHierarchy);
   }
 
   /**
@@ -240,7 +240,7 @@
   public
   static
   void configure(java.net.URL configURL) {
-    new PropertyConfigurator().doConfigure(configURL, Category.defaultHierarchy);
+    new PropertyConfigurator().doConfigure(configURL, Logger.defaultHierarchy);
   }
 
 
@@ -252,7 +252,7 @@
   static
   public
   void configure(Properties properties) {
-    new PropertyConfigurator().doConfigure(properties, Category.defaultHierarchy);
+    new PropertyConfigurator().doConfigure(properties, Logger.defaultHierarchy);
   }
 
   /**
@@ -268,7 +268,7 @@
       LogLog.setInternalDebugging(OptionConverter.toBoolean(value, true));
     }
     
-    configureRootCategory(properties, hierarchy);
+    configureRootLogger(properties, hierarchy);
     parseCats(properties, hierarchy);
 
     // We don't want to hold references to appenders preventing their
@@ -322,14 +322,14 @@
   }
   
     
-  void configureRootCategory(Properties props, Hierarchy hierarchy) {
-    String value = props.getProperty(ROOT_CATEGORY_PREFIX);
+  void configureRootLogger(Properties props, Hierarchy hierarchy) {
+    String value = props.getProperty(ROOT_LOGGER_PREFIX);
     if(value == null) 
-      LogLog.debug("Could not find root category information. Is this OK?");
+      LogLog.debug("Could not find root Logger information. Is this OK?");
     else {
-      Category root = hierarchy.getRoot();
+      Logger root = hierarchy.getRoot();
       synchronized(root) {
-	parseCategory(props, root, ROOT_CATEGORY_PREFIX, INTERNAL_ROOT_NAME, 
+	parseLogger(props, root, ROOT_LOGGER_PREFIX, INTERNAL_ROOT_NAME, 
 		      value);
       }
     }        
@@ -337,36 +337,36 @@
 
 
   /**
-     Parse non-root elements, such non-root categories and renderers.
+     Parse non-root elements, such non-root Loggers and renderers.
   */
   protected
   void parseCats(Properties props, Hierarchy hierarchy) {
     Enumeration enumeration = props.propertyNames();
     while(enumeration.hasMoreElements()) {      
       String key = (String) enumeration.nextElement();
-      if(key.startsWith(CATEGORY_PREFIX)) {
-	String categoryName = key.substring(CATEGORY_PREFIX.length());	
+      if(key.startsWith(LOGGER_PREFIX)) {
+	String loggerName = key.substring(LOGGER_PREFIX.length());	
 	String value =  props.getProperty(key);
-	Category cat = hierarchy.getInstance(categoryName);
+	Logger cat = hierarchy.getInstance(loggerName);
 	synchronized(cat) {
-	  parseCategory(props, cat, key, categoryName, value);
-	  parseAdditivityForCategory(props, cat, categoryName);
+	  parseLogger(props, cat, key, loggerName, value);
+	  parseAdditivityForLogger(props, cat, loggerName);
 	}
       }      
     }
   }  
 
   /**
-     Parse the additivity option for a non-root category.
+     Parse the additivity option for a non-root Logger.
    */
-  void parseAdditivityForCategory(Properties props, Category cat,
-				  String categoryName) {
-    String value = props.getProperty(ADDITIVITY_PREFIX + categoryName);
-    LogLog.debug("Handling "+ADDITIVITY_PREFIX + categoryName+"=["+value+"]");
+  void parseAdditivityForLogger(Properties props, Logger cat,
+				  String loggerName) {
+    String value = props.getProperty(ADDITIVITY_PREFIX + loggerName);
+    LogLog.debug("Handling "+ADDITIVITY_PREFIX + loggerName+"=["+value+"]");
     // touch additivity only if necessary	
     if((value != null) && (!value.equals(""))) {
       boolean additivity = OptionConverter.toBoolean(value, true);
-      LogLog.debug("Setting additivity for \""+categoryName+"\" to "+
+      LogLog.debug("Setting additivity for \""+loggerName+"\" to "+
 		   additivity); 
       cat.setAdditivity(additivity);
     }
@@ -374,18 +374,18 @@
   }
   
   /**
-     This method must work for the root category as well.
+     This method must work for the root Logger as well.
    */
-  void parseCategory(Properties props, Category cat, String optionKey,
-		     String catName, String value) {
+  void parseLogger(Properties props, Logger logger, String optionKey,
+		     String logName, String value) {
 
-    LogLog.debug("Parsing for [" +catName +"] with value=[" + value+"].");
+    LogLog.debug("Parsing for [" +logName +"] with value=[" + value+"].");
     // We must skip over ',' but not white space
     StringTokenizer st = new StringTokenizer(value, ",");
  
     
     // If value is not in the form ", appender.." or "", then we should set
-    // the priority of the category.
+    // the priority of the Logger.
     
     if(!(value.startsWith(",") || value.equals(""))) {
 
@@ -396,18 +396,18 @@
       String priorityStr = st.nextToken();
       LogLog.debug("Priority token is [" + priorityStr + "].");
 
-      // If the priority value is inherited, set category priority value to
+      // If the priority value is inherited, set Logger priority value to
       // null. We also check that the user has not specified inherited for the
-      // root category.
-      if(priorityStr.equalsIgnoreCase(INHERITED) && !catName.equals(INTERNAL_ROOT_NAME)) 
-	cat.setPriority(null);
+      // root Logger.
+      if(priorityStr.equalsIgnoreCase(INHERITED) && !logName.equals(INTERNAL_ROOT_NAME)) 
+	logger.setPriority(null);
       else 
-	cat.setPriority(Priority.toPriority(priorityStr));
-      LogLog.debug("Category " + catName + " set to " + cat.getPriority());
+	logger.setPriority(Priority.toPriority(priorityStr));
+      LogLog.debug("Logger " + logName + " set to " + logger.getPriority());
     }
 
     // Remove all existing appenders. They will be reconstructed below.
-    cat.removeAllAppenders();
+    logger.removeAllAppenders();
     
     Appender appender;    
     String appenderName;
@@ -418,7 +418,7 @@
       LogLog.debug("Parsing appender named \"" + appenderName +"\".");
       appender = parseAppender(props, appenderName);
       if(appender != null) {
-	cat.addAppender(appender);
+	logger.addAppender(appender);
       }      
     }          
   }

Modified: logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/ProvisionNode.java
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/ProvisionNode.java?rev=370187&r1=370186&r2=370187&view=diff
==============================================================================
--- logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/ProvisionNode.java (original)
+++ logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/ProvisionNode.java Wed Jan 18 09:05:18 2006
@@ -11,8 +11,8 @@
 
 class ProvisionNode extends Vector {
     
-  ProvisionNode(Category cat) {
+  ProvisionNode(Logger logger) {
     super();
-    this.addElement(cat);
+    this.addElement(logger);
   }
 }

Modified: logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/StressCategory.java
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/StressCategory.java?rev=370187&r1=370186&r2=370187&view=diff
==============================================================================
--- logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/StressCategory.java (original)
+++ logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/StressCategory.java Wed Jan 18 09:05:18 2006
@@ -1,241 +0,0 @@
-/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
- *
- * This software is published under the terms of the Apache Software
- * License version 1.1, a copy of which has been included with this
- * distribution in the LICENSE.txt file.  */
-
-package org.apache.log4j;
-
-
-import org.apache.log4j.Priority;
-import org.apache.log4j.Category;
-import java.util.Random;
-
-/*
-  Stress test the Category class.
-
-*/
-
-class StressCategory {
-
-  static Priority[] priority = new Priority[] {Priority.DEBUG, 
-					       Priority.INFO, 
-					       Priority.WARN,
-					       Priority.ERROR,
-					       Priority.FATAL};
-
-  static Priority defaultPriority = Category.getRoot().getPriority();
-  
-  static int LENGTH;
-  static String[] names;
-  static Category[] cat;
-  static CT[] ct;
-
-  static Random random = new Random(10);
-
-  public static void main(String[] args) {
-    
-    LENGTH = args.length;
-
-    if(LENGTH == 0) {
-      System.err.println( "Usage: java " + StressCategory.class.getName() +
-			  " name1 ... nameN\n.");      
-      System.exit(1);
-    }
-    if(LENGTH >= 7) {
-      System.err.println(
-        "This stress test suffers from combinatorial explosion.\n"+
-        "Invoking with seven arguments takes about 90 minutes even on fast machines");
-    }
-
-    names = new String[LENGTH];
-    for(int i=0; i < LENGTH; i++) {
-      names[i] = args[i];
-    }    
-    cat = new Category[LENGTH];
-    ct = new CT[LENGTH]; 
-
-
-    permute(0); 
-
-    // If did not exit, then passed all tests.
-  }
-
-  // Loop through all permutations of names[].
-  // On each possible permutation call createLoop
-  static
-  void permute(int n) {
-    if(n == LENGTH)
-      createLoop(0);
-    else
-      for(int i = n; i < LENGTH; i++) {
-	swap(names, n, i);
-	permute(n+1);
-	swap(names, n, i);	
-      }
-  }
-
-  static
-  void swap(String[] names, int i, int j) {
-    String t = names[i];
-    names[i] = names[j];
-    names[j] = t;
-  }
-  
-  public
-  static
-  void permutationDump() {
-    System.out.print("Current permutation is - ");
-    for(int i = 0; i < LENGTH; i++) {
-      System.out.print(names[i] + " ");
-    }
-    System.out.println();
-  }
-
-
-  // Loop through all possible 3^n combinations of not instantiating, 
-  // instantiating and setting/not setting a priority.
-
-  static
-  void createLoop(int n) {
-    if(n == LENGTH) {  
-      //System.out.println("..............Creating cat[]...........");
-      for(int i = 0; i < LENGTH; i++) {
-	if(ct[i] == null)
-	  cat[i] = null;
-	else {
-	  cat[i] = Category.getInstance(ct[i].catstr);
-	  cat[i].setPriority(ct[i].priority);
-	}
-      }
-      test();
-      // Clear hash table for next round
-      Category.defaultHierarchy.clear();
-    }
-    else {      
-      ct[n]  = null;
-      createLoop(n+1);  
-
-      ct[n]  = new CT(names[n], null);
-      createLoop(n+1);  
-      
-      int r = random.nextInt(); if(r < 0) r = -r;
-      ct[n]  = new CT(names[n], priority[r%5]);
-      createLoop(n+1);
-    }
-  }
-
-
-  static
-  void test() {    
-    //System.out.println("++++++++++++TEST called+++++++++++++");
-    //permutationDump();
-    //catDump();
-
-    for(int i = 0; i < LENGTH; i++) {
-      if(!checkCorrectness(i)) {
-	System.out.println("Failed stress test.");
-	permutationDump();
-	
-	//Hierarchy._default.fullDump();
-	ctDump();
-	catDump();
-	System.exit(1);
-      }
-    }
-  }
-  
-  static
-  void ctDump() {
-    for(int j = 0; j < LENGTH; j++) {
-       if(ct[j] != null) 
-	    System.out.println("ct [" + j + "] = ("+ct[j].catstr+"," + 
-			       ct[j].priority + ")");
-       else 
-	 System.out.println("ct [" + j + "] = undefined");
-    }
-  }
-  
-  static
-  void catDump() {
-    for(int j = 0; j < LENGTH; j++) {
-      if(cat[j] != null)
-	System.out.println("cat[" + j + "] = (" + cat[j].name + "," +
-			   cat[j].getPriority() + ")");
-      else
-	System.out.println("cat[" + j + "] = undefined"); 
-    }
-  }
-
-  //  static
-  //void provisionNodesDump() {
-  //for (Enumeration e = CategoryFactory.ht.keys(); e.hasMoreElements() ;) {
-  //  CategoryKey key = (CategoryKey) e.nextElement();
-  //  Object c = CategoryFactory.ht.get(key);
-  //  if(c instanceof  ProvisionNode) 
-  //((ProvisionNode) c).dump(key.name);
-  //}
-  //}
-  
-  static
-  boolean checkCorrectness(int i) {
-    CT localCT = ct[i];
-
-    // Can't perform test if category is not instantiated
-    if(localCT == null) 
-      return true;
-    
-    // find expected priority
-    Priority expected = getExpectedPrioriy(localCT);
-
-			    
-    Priority purported = cat[i].getChainedPriority();
-
-    if(expected != purported) {
-      System.out.println("Expected priority for " + localCT.catstr + " is " +
-		       expected);
-      System.out.println("Purported priority for "+ cat[i].name + " is "+purported);
-      return false;
-    }
-    return true;
-      
-  }
-
-  static
-  Priority getExpectedPrioriy(CT ctParam) {
-    Priority priority = ctParam.priority;
-    if(priority != null) 
-      return priority;
-
-    
-    String catstr = ctParam.catstr;    
-    
-    for(int i = catstr.lastIndexOf('.', catstr.length()-1); i >= 0; 
-	                              i = catstr.lastIndexOf('.', i-1))  {
-      String substr = catstr.substring(0, i);
-
-      // find the priority of ct corresponding to substr
-      for(int j = 0; j < LENGTH; j++) {	
-	if(ct[j] != null && substr.equals(ct[j].catstr)) {
-	  Priority p = ct[j].priority;
-	  if(p != null) 
-	    return p;	  
-	}
-      }
-    }
-    return defaultPriority;
-  }
-
-  
-
-  static class CT {
-    public String   catstr;
-    public Priority priority;
-
-    CT(String catstr,  Priority priority) {
-      this.catstr = catstr;
-      this.priority = priority;
-    }
-  }
-}

Modified: logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/WriterAppender.java
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/WriterAppender.java?rev=370187&r1=370186&r2=370187&view=diff
==============================================================================
--- logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/WriterAppender.java (original)
+++ logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/WriterAppender.java Wed Jan 18 09:05:18 2006
@@ -23,12 +23,12 @@
    {@link java.io.OutputStream} depending on the user's choice.
 
    @author Ceki G&uuml;lc&uuml;
+  * @author <a href="mailto:ralph.curtis@gabrielsoftware.com">Ralph Curtis</a>
    @since 1.1 */
 public class WriterAppender extends AppenderSkeleton {
 
   /**
-     This is the {@link QuietWriter quietWriter} where we will write
-     to. 
+     This is where we will write to. 
   */
   protected Writer w;
 
@@ -189,7 +189,7 @@
     
     <p><b>WARNING:</b> Logging to an unopened Writer will fail.
     <p>  
-    @param Writer An already opened Writer.  */
+    @param writer An already opened Writer.  */
   public
   synchronized
   void setWriter(Writer writer) {

Modified: logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/Sort.java
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/Sort.java?rev=370187&r1=370186&r2=370187&view=diff
==============================================================================
--- logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/Sort.java (original)
+++ logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/Sort.java Wed Jan 18 09:05:18 2006
@@ -2,7 +2,7 @@
 package org.apache.log4j.examples;
 
 import org.apache.log4j.PropertyConfigurator;
-import org.apache.log4j.Category;
+import org.apache.log4j.Logger;
 import org.apache.log4j.Priority;  
 
 /**
@@ -31,7 +31,7 @@
 
 public class Sort {
 
-  static Category CAT = Category.getInstance(Sort.class.getName());
+  static Logger CAT = Logger.getInstance(Sort.class.getName());
   
   public static void main(String[] args) {
     if(args.length != 2) {
@@ -62,8 +62,9 @@
     sa1.dump();
 
     // We intentionally initilize sa2 with null.
+    CAT.info("We intentionally initilize sa2 with null.");
     SortAlgo sa2 = new SortAlgo(null);
-    CAT.info("The next log statement should be an error message.");
+    CAT.info("The next log statement should be an error message on console and in log.");
     sa2.dump();  
     CAT.info("Exiting main method.");    
   }

Modified: logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/SortAlgo.java
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/SortAlgo.java?rev=370187&r1=370186&r2=370187&view=diff
==============================================================================
--- logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/SortAlgo.java (original)
+++ logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/SortAlgo.java Wed Jan 18 09:05:18 2006
@@ -1,7 +1,7 @@
 
 package org.apache.log4j.examples;
 
-import org.apache.log4j.Category;
+import org.apache.log4j.Logger;
 import org.apache.log4j.NDC;
 
 /**
@@ -17,11 +17,11 @@
 public class SortAlgo {
 
   final static String className = SortAlgo.class.getName();
-  final static Category CAT = Category.getInstance(className);
-  final static Category OUTER = Category.getInstance(className + ".OUTER");
-  final static Category INNER = Category.getInstance(className + ".INNER");
-  final static Category DUMP = Category.getInstance(className + ".DUMP");
-  final static Category SWAP = Category.getInstance(className + ".SWAP");
+  final static Logger CAT = Logger.getInstance(className);
+  final static Logger OUTER = Logger.getInstance(className + ".OUTER");
+  final static Logger INNER = Logger.getInstance(className + ".INNER");
+  final static Logger DUMP = Logger.getInstance(className + ".DUMP");
+  final static Logger SWAP = Logger.getInstance(className + ".SWAP");
 
   int[] intArray;
 

Modified: logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/Trivial.java
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/Trivial.java?rev=370187&r1=370186&r2=370187&view=diff
==============================================================================
--- logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/Trivial.java (original)
+++ logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/Trivial.java Wed Jan 18 09:05:18 2006
@@ -2,8 +2,9 @@
 package org.apache.log4j.examples;
 
 
-import org.apache.log4j.Category;
-import org.apache.log4j.BasicConfigurator;
+import org.apache.log4j.Logger;
+import org.apache.log4j.PropertyConfigurator;
+//import org.apache.log4j.BasicConfigurator;
 import org.apache.log4j.NDC;
 
 /**
@@ -34,10 +35,10 @@
  */
 public class Trivial {
 
-  static Category cat = Category.getInstance(Trivial.class.getName());
+  static Logger cat = Logger.getInstance(Trivial.class.getName());
 
   public static void main(String[] args) {
-    BasicConfigurator.configure();
+	init(args[0]);
     NDC.push("Client #45890"); 
 
     cat.info("Awake awake. Put on thy strength.");
@@ -54,11 +55,17 @@
   }
 
   static class InnerTrivial {
-    static  Category cat = Category.getInstance(InnerTrivial.class.getName());
+    static  Logger cat = Logger.getInstance(InnerTrivial.class.getName());
 
     static    
     void foo() {
       cat.info("Entered foo."); 
     }
   }
+  
+  static
+  void init(String configFile) {
+    PropertyConfigurator.configure(configFile);
+  }
+  
 }

Modified: logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/sort1.lcf
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/sort1.lcf?rev=370187&r1=370186&r2=370187&view=diff
==============================================================================
--- logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/sort1.lcf (original)
+++ logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/sort1.lcf Wed Jan 18 09:05:18 2006
@@ -1,19 +1,19 @@
 # An example log4j configuration file that outputs to System.out.
 # The output info consists of relative time, priority, thread name,
-# category name, nested diagnostic context, the and the message in
+# logger name, nested diagnostic context, the and the message in
 # that order.
 
 # For the general syntax of property based configuration files see the
 # documenation of org.apache.log4j.PropertyConfigurator.
 
-# The root category uses the appender called A1. Since no priority is
-# specified, the root category assumes the default priority for root
-# which is DEBUG in log4j. The root category is the only category that
+# The root logger uses the appender called A1. Since no priority is
+# specified, the root logger assumes the default priority for root
+# which is DEBUG in log4j. The root logger is the only logger that
 # has a default priority. All other categories do not have a default
 # priority. in which case the priority is inherited from the
 # hierarchy.
 
-log4j.rootCategory=, A1
+log4j.rootLogger=, A1
 
 # A1 is set to be a ConsoleAppender which outputs to System.out. 
 log4j.appender.A1=org.apache.log4j.FileAppender
@@ -24,9 +24,9 @@
 
 # The conversion pattern uses format specifiers. You might want to
 # change the pattern an watch the output layout change.
-log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
+log4j.appender.A1.layout.ConversionPattern=%d %-4r %-5p [%t] %37c - %m%n
 
 # In this example, we are not really interested in INNER loop or SWAP
 # messages. Try changing the priorities of these categories.
-# log4j.category.org.apache.log4j.examples.SortAlgo.INNER=WARN
-# log4j.category.org.apache.log4j.examples.SortAlgo.SWAP=WARN
+# log4j.logger.org.apache.log4j.examples.SortAlgo.INNER=WARN
+# log4j.logger.org.apache.log4j.examples.SortAlgo.SWAP=WARN

Modified: logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/sort2.lcf
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/sort2.lcf?rev=370187&r1=370186&r2=370187&view=diff
==============================================================================
--- logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/sort2.lcf (original)
+++ logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/sort2.lcf Wed Jan 18 09:05:18 2006
@@ -1,7 +1,7 @@
 # An example log4j configuration file that outputs both to System.out
 # and a file named 'test'.
 
-log4j.rootCategory=, A1, A2
+log4j.rootLogger=, A1, A2
 
 # A1 is set to be FileAppender sending its output to System.out
 log4j.appender.A1=org.apache.log4j.FileAppender
@@ -12,12 +12,12 @@
 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
 
 # The conversion pattern consists of date in ISO8601 format, priority,
-# thread name, category name truncated to its rightmost two components
+# thread name, logger name truncated to its rightmost two components
 # and left justified to 17 characters, location information consisting
 # of file name (padded to 13 characters) and line number, nested
 # diagnostic context, the and the application supplied message
 
-log4j.appender.A1.layout.ConversionPattern=%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n
+log4j.appender.A1.layout.ConversionPattern=%d %-5p [%t] %-17c{2} - %m%n
 
 # Appender A2 writes to the file "test".
 log4j.appender.A2=org.apache.log4j.FileAppender
@@ -35,5 +35,5 @@
 # messages.  You might try to set INNER and SWAP to DEBUG for more
 # verbose output.
 
-log4j.category.org.apache.log4j.examples.SortAlgo.INNER=INFO
-log4j.category.org.apache.log4j.examples.SortAlgo.SWAP=INFO
+log4j.logger.org.apache.log4j.examples.SortAlgo.INNER=INFO
+log4j.logger.org.apache.log4j.examples.SortAlgo.SWAP=INFO

Modified: logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/sort3.lcf
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/sort3.lcf?rev=370187&r1=370186&r2=370187&view=diff
==============================================================================
--- logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/sort3.lcf (original)
+++ logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/examples/sort3.lcf Wed Jan 18 09:05:18 2006
@@ -1,5 +1,5 @@
 # Attach appender A1 to root. Set root priority to Prority.DEBUG.
-log4j.rootCategory=DEBUG, A1
+log4j.rootLogger=DEBUG, A1
 
 
 
@@ -8,7 +8,7 @@
 # since the threshold is set to Priority.ERROR.
 
 # The fact that the root priority is set to Prority.DEBUG only
-# influences log requests made to the root category. It has no
+# influences log requests made to the root logger. It has no
 # influence on the appenders attached to root.
 
 log4j.appender.A1=org.apache.log4j.ConsoleAppender
@@ -16,22 +16,22 @@
 
 
 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-log4j.appender.A1.layout.ConversionPattern=%p [%t] %c{2} (%M:%L) - %m%n
+log4j.appender.A1.layout.ConversionPattern=%d %p [%t] %c{2} - %m%n
 
-# Set the priority of the category named "org.apache.log4j.examples" to 
+# Set the priority of the logger named "org.apache.log4j.examples" to 
 # Priority.INFO, attach appender A2.
-log4j.category.org.apache.log4j.examples=INFO, A2
+log4j.logger.org.apache.log4j.examples=INFO, A2
 
 # Appender A2 writes to the file "test" in user's home.
 log4j.appender.A2=org.apache.log4j.FileAppender
-log4j.appender.A2.File=${user.home}/test
+log4j.appender.A2.File=test.log
 
 # Truncate 'test' if it aleady exists.
 log4j.appender.A2.Append=false
 
 # Appender A2 uses the PatternLayout.
 log4j.appender.A2.layout=org.apache.log4j.PatternLayout
-log4j.appender.A2.layout.ConversionPattern=%5r %-5p [%t] %c{2} - %m%n
+log4j.appender.A2.layout.ConversionPattern=%D %5r %-5p [%t] %c{2} - %m%n
 
 
 

Modified: logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/helpers/OptionConverter.java
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/helpers/OptionConverter.java?rev=370187&r1=370186&r2=370187&view=diff
==============================================================================
--- logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/helpers/OptionConverter.java (original)
+++ logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/helpers/OptionConverter.java Wed Jan 18 09:05:18 2006
@@ -25,6 +25,27 @@
   }
 
 
+  /**
+  Very similar to <code>System.getProperty</code> except
+  that the {@link SecurityException} is hidden.
+
+  @param key The key to search for.
+  @param def The default value to return.
+  @return the string value of the system property, or the default
+  value if there is no property with that key.
+
+  @since 1.1 */
+public
+static
+String getSystemProperty(String key, String def) {
+ try {
+   return System.getProperty(key, def);
+ } catch(Throwable e) { // MS-Java throws com.ms.security.SecurityExceptionEx
+   LogLog.debug("Was not allowed to read system property \""+key+"\".");
+   return def;
+ }
+}
+
   public
   static
   Object instantiateByKey(Properties props, String key, Class superClass,

Modified: logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/helpers/PatternParser.java
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/helpers/PatternParser.java?rev=370187&r1=370186&r2=370187&view=diff
==============================================================================
--- logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/helpers/PatternParser.java (original)
+++ logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/helpers/PatternParser.java Wed Jan 18 09:05:18 2006
@@ -2,10 +2,9 @@
 
 import org.apache.log4j.helpers.LogLog;
 import org.apache.log4j.Layout;
-import org.apache.log4j.NDC;
 import org.apache.log4j.spi.LoggingEvent;
-import java.text.DateFormat;
-import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 // Contributors:   Nelson Minar <(n...@monkey.org>
 //                 Igor E. Poteryaev <ja...@mail.ru>  
@@ -18,6 +17,7 @@
    @author <a href=mailto:"cakalijp@Maritz.com">James P. Cakalic</a>
    @author Ceki G&uuml;lc&uuml;
    @author Anders Kristensen       
+  * @author <a href="mailto:ralph.curtis@gabrielsoftware.com">Ralph Curtis</a>
 
    @since 0.8.2
 */
@@ -33,11 +33,13 @@
   private static final int MAX_STATE = 5;
 
 
-  static final int RELATIVE_TIME_CONVERTER = 2000;
-  static final int THREAD_CONVERTER = 2001;
-  static final int PRIORITY_CONVERTER = 2002;
+  static final int RELATIVE_TIME_CONVERTER = 2000; // %r
+  static final int THREAD_CONVERTER = 2001; // %t
+  static final int PRIORITY_CONVERTER = 2002; // %p
   //static final int NDC_CONVERTER = 2003;
-  static final int MESSAGE_CONVERTER = 2004;
+  static final int MESSAGE_CONVERTER = 2004; // %m
+  static final int GMT_DATESTAMP_CONVERTER = MESSAGE_CONVERTER + 1; // %D
+  static final int LOCAL_DATESTAMP_CONVERTER = GMT_DATESTAMP_CONVERTER + 1; // %d
 
   int state;
   protected StringBuffer currentLiteral = new StringBuffer(32);
@@ -204,12 +206,20 @@
     PatternConverter pc = null;
     switch(c) {
     case 'c':
-      pc = new CategoryPatternConverter(formattingInfo,
+      pc = new LoggerPatternConverter(formattingInfo,
 					extractPrecisionOption());	
       //LogLog.debug("CATEGORY converter.");
       //formattingInfo.dump();      
       currentLiteral.setLength(0);
       break;
+    case 'D':
+    	pc = new BasicPatternConverter(formattingInfo, 
+    			GMT_DATESTAMP_CONVERTER);
+    	break;
+    case 'd':
+    	pc = new BasicPatternConverter(formattingInfo, 
+    			LOCAL_DATESTAMP_CONVERTER);
+    	break;
     case 'm':
       pc = new BasicPatternConverter(formattingInfo, MESSAGE_CONVERTER);
       //LogLog.debug("MESSAGE converter.");
@@ -279,25 +289,34 @@
     
   private static class BasicPatternConverter extends PatternConverter {
     int type;
+    static String dateFormatStr = "yyyy.MM.dd HH:mm:ss zzz";
+    static SimpleDateFormat gmtDateFormatter = new SimpleDateFormat(dateFormatStr);
+    static SimpleDateFormat localDateFormatter = new SimpleDateFormat(dateFormatStr);
     
     BasicPatternConverter(FormattingInfo formattingInfo, int type) {
       super(formattingInfo);     
       this.type = type;
+      // Set GMT date formatter to display GMT time not local
+      gmtDateFormatter.setTimeZone(TimeZone.getTimeZone("GMT"));
     }
 
     public
     String convert(LoggingEvent event) {
       switch(type) {
+      case GMT_DATESTAMP_CONVERTER:
+        	return gmtDateFormatter.format(new Date(event.timeStamp));
+      case LOCAL_DATESTAMP_CONVERTER:
+        	return localDateFormatter.format(new Date(event.timeStamp));
       case RELATIVE_TIME_CONVERTER: 
-	return (Long.toString(event.timeStamp - LoggingEvent.getStartTime()));
+      	return (Long.toString(event.timeStamp - LoggingEvent.getStartTime()));
       case THREAD_CONVERTER:
-	return event.getThreadName();
+      	return event.getThreadName();
       case PRIORITY_CONVERTER:
-	return event.priority.toString();
+      	return event.priority.toString();
 	//case NDC_CONVERTER:  
 	//return event.getNDC();
       case MESSAGE_CONVERTER: {
-	return event.message;
+      	return event.message;
       }
       default: return null;
       }
@@ -323,10 +342,10 @@
     }
   }
 
-  private static  class CategoryPatternConverter extends PatternConverter {
+  private static  class LoggerPatternConverter extends PatternConverter {
     int precision;
     
-    CategoryPatternConverter(FormattingInfo formattingInfo, int precision) {
+    LoggerPatternConverter(FormattingInfo formattingInfo, int precision) {
       super(formattingInfo);
       this.precision =  precision;      
     }
@@ -337,7 +356,7 @@
     
     public
     String convert(LoggingEvent event) {
-      String n = event.categoryName;
+      String n = event.loggerName;
       if(precision <= 0)
 	return n;
       else {
@@ -345,7 +364,7 @@
 
 	// We substract 1 from 'len' when assigning to 'end' to avoid out of
 	// bounds exception in return r.substring(end+1, len). This can happen if
-	// precision is 1 and the category name ends with a dot. 
+	// precision is 1 and the logger name ends with a dot. 
 	int end = len -1 ;
 	for(int i = precision; i > 0; i--) {	  
 	  end = n.lastIndexOf('.', end-1);

Modified: logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/spi/LoggingEvent.java
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/spi/LoggingEvent.java?rev=370187&r1=370186&r2=370187&view=diff
==============================================================================
--- logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/spi/LoggingEvent.java (original)
+++ logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/spi/LoggingEvent.java Wed Jan 18 09:05:18 2006
@@ -7,7 +7,7 @@
 
 package org.apache.log4j.spi;
 
-import org.apache.log4j.Category;
+import org.apache.log4j.Logger;
 import org.apache.log4j.Priority;
 import org.apache.log4j.NDC;
 
@@ -34,21 +34,22 @@
 
    @author Ceki G&uuml;lc&uuml;
    @author James P. Cakalic
+  * @author <a href="mailto:ralph.curtis@gabrielsoftware.com">Ralph Curtis</a>
    
    @since 0.8.2 */
 public class LoggingEvent {
 
   private static long startTime = System.currentTimeMillis();
 
-  /** The category of the logging event. The category field is not
+  /** The logger of the logging event. The logger field is not
   serialized for performance reasons. 
 
   <p>It is set by the LoggingEvent constructor or set by a remote
   entity after deserialization. */
-  transient public Category category;
+  transient public Logger logger;
 
-  /** The category name. */
-  public final String categoryName;
+  /** The logger name. */
+  public final String loggerName;
   
   /** Priority of logging event. Priority cannot be serializable
       because it is a flyweight.  Due to its special seralization it
@@ -94,14 +95,14 @@
      <p>Except {@link #timeStamp} all the other fields of
      <code>LoggingEvent</code> are filled when actually needed.
      <p>
-     @param category The category of this event.
+     @param logger The logger of this event.
      @param priority The priority of this event.
      @param message  The message of this event.
      @param throwable The throwable of this event.  */
-  public LoggingEvent(Category category, Priority priority, Object message, 
+  public LoggingEvent(Logger logger, Priority priority, Object message, 
 		      Throwable throwable) {
-    this.category = category;
-    this.categoryName = category.getName();
+    this.logger = logger;
+    this.loggerName = logger.getName();
     this.priority = priority;
     this.message = message.toString();
     this.throwable = throwable;

Modified: logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/spi/RootCategory.java
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/spi/RootCategory.java?rev=370187&r1=370186&r2=370187&view=diff
==============================================================================
--- logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/spi/RootCategory.java (original)
+++ logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/spi/RootCategory.java Wed Jan 18 09:05:18 2006
@@ -1,60 +0,0 @@
-
-package org.apache.log4j.spi;
-
-import  org.apache.log4j.Category;
-import org.apache.log4j.Logger;
-import  org.apache.log4j.Priority;
-import  org.apache.log4j.helpers.LogLog;
-
-
-/**
-   RootCategory sits at the top of the category hierachy. It is a
-   regular category except that it provides several guarantees.
-
-   <p>First, it cannot be assigned a <code>null</code>
-   priority. Second, since root category cannot have a parent, the
-   {@link #getChainedPriority} method always returns the value of the
-   priority field without walking the hierarchy.
-
-   @author Ceki G&uuml;lc&uuml;
-
- */
-final public class RootCategory extends Logger {
-
-  /**
-     The root category names itself as "root". However, the root
-     category cannot be retrieved by name.  
-  */
-  public
-  RootCategory(Priority priority) {
-    super("root");
-    setPriority(priority);
-  }
-
-  
-  /**
-     Return the assigned priority value without walking the category
-     hierarchy.
-  */
-  final
-  public 
-  Priority getChainedPriority() {
-    return priority;
-  }
-
-  /**
-     Setting a null value to the priority of the root category may have catastrophic
-     results. We prevent this here.
-
-     @since 0.8.3 */
-  final  
-  public
-  void setPriority(Priority priority) {
-    if(priority == null) {
-      LogLog.error("null priority disallowed", new Throwable());
-    }
-    else {
-      this.priority = priority;
-    }
-  }
-}

Modified: logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/spi/RootLogger.java
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/spi/RootLogger.java?rev=370187&r1=370186&r2=370187&view=diff
==============================================================================
--- logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/spi/RootLogger.java (original)
+++ logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/spi/RootLogger.java Wed Jan 18 09:05:18 2006
@@ -7,21 +7,23 @@
 
 
 /**
-   RootLogger sits at the top of the category hierachy. It is a
-   regular category except that it provides several guarantees.
+   RootLogger sits at the top of the Logger hierachy. It is a
+   regular Logger except that it provides several guarantees.
 
    <p>First, it cannot be assigned a <code>null</code>
-   priority. Second, since root category cannot have a parent, the
+   priority. Second, since root Logger cannot have a parent, the
    {@link #getChainedPriority} method always returns the value of the
    priority field without walking the hierarchy.
 
+   @author Ceki G&uuml;lc&uuml;
+  * @author <a href="mailto:ralph.curtis@gabrielsoftware.com">Ralph Curtis</a>
 
  */
 final public class RootLogger extends Logger {
 
   /**
-     The root logger names itself as "root". However, the root
-     category cannot be retrieved by name.  
+     The root Logger names itself as "root". However, the root
+     Logger cannot be retrieved by name.  
   */
   public
   RootLogger(Priority priority) {
@@ -31,7 +33,7 @@
 
   
   /**
-     Return the assigned priority value without walking the category
+     Return the assigned priority value without walking the Logger
      hierarchy.
   */
   final
@@ -41,7 +43,7 @@
   }
 
   /**
-     Setting a null value to the priority of the root category may have catastrophic
+     Setting a null value to the priority of the root Logger may have catastrophic
      results. We prevent this here.
 
      @since 0.8.3 */

Modified: logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/test/ConfigurationFileParsing.java
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/test/ConfigurationFileParsing.java?rev=370187&r1=370186&r2=370187&view=diff
==============================================================================
--- logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/test/ConfigurationFileParsing.java (original)
+++ logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/test/ConfigurationFileParsing.java Wed Jan 18 09:05:18 2006
@@ -8,11 +8,11 @@
 package org.apache.log4j.test; 
 
 import org.apache.log4j.PropertyConfigurator;
-import org.apache.log4j.Category;
+import org.apache.log4j.Logger;
 
 public class ConfigurationFileParsing {
   
-  static Category log = Category.getInstance(ConfigurationFileParsing.class);
+  static Logger log = Logger.getInstance(ConfigurationFileParsing.class);
 
   public 
   static 
@@ -20,7 +20,7 @@
 
     if(argv.length == 1) {
       PropertyConfigurator.configure(argv[0]);
-      Category root = Category.getRoot();
+      Logger root = Logger.getRoot();
       root.debug("Message 1");
       log.info("Message 2");      
 

Modified: logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/test/Hello.java
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/test/Hello.java?rev=370187&r1=370186&r2=370187&view=diff
==============================================================================
--- logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/test/Hello.java (original)
+++ logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/test/Hello.java Wed Jan 18 09:05:18 2006
@@ -13,24 +13,40 @@
 /**
    Very simple log4j usage example.
 
-   @author  Ceki G&uuml;lc&uuml;   
+   @author  Ceki G&uuml;lc&uuml;  
+   @author <a href="mailto:ralph.curtis@gabrielsoftware.com">Ralph Curtis</a> 
  */
 public class Hello {
 
-  static Category log = Category.getInstance(Hello.class);
+  static Logger log = Logger.getInstance(Hello.class);
+  /* Example of using two different loggers in same class. */
+  static Logger consoleLogger = Logger.getInstance(Hello.class.getName()+" ConsoleLogger");
 
   public 
   static 
   void main(String argv[]) {
-    Category root = Category.getRoot();
-    Layout layout = new PatternLayout("%p [%t] %c - %m%n");
+    Logger root = Logger.getRoot();
+    Layout layout = new PatternLayout("%D %p [%t] %c - %m%n");
     try {
-      root.addAppender(new FileAppender(layout, System.out));
+//      root.addAppender(new FileAppender(layout, System.out));
+//      root.addAppender(new ConsoleAppender(layout));
+//        root.addAppender(new FileAppender(layout, "testlog.log"));
+        log.addAppender(new FileAppender(layout, "testlog.log"));
+//      consoleLogger.addAppender(new ConsoleAppender());
     } catch(Exception e) {
       LogLog.warn("Could not open file appender.");
     }
 
     log.debug("Hello world.");
     log.info("What a beatiful day.");
+    int max = 100000;
+    consoleLogger.info("Writing "+max +" logs");
+    long t1;
+    long t0 = System.currentTimeMillis();
+    for(int i = 0; i < max; ++i) {
+    	log.info("What a beautiful day.");
+    }
+    t1 = System.currentTimeMillis();
+    consoleLogger.info("Test done. Logged: " +max +" logs in " +(t1-t0) +" msec");
   }
 }

Modified: logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/test/Min.java
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/test/Min.java?rev=370187&r1=370186&r2=370187&view=diff
==============================================================================
--- logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/test/Min.java (original)
+++ logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/test/Min.java Wed Jan 18 09:05:18 2006
@@ -6,7 +6,7 @@
 import java.io.IOException;
 
 /**
-   This class tests the functionality of the Category class and the
+   This class tests the functionality of the Logger class and the
    different layouts.
 
    @author  Ceki G&uuml;lc&uuml;
@@ -44,7 +44,7 @@
     try {
       Layout layout = new PatternLayout(format);        
       Appender appender = new FileAppender(layout, System.out);
-      Category.getRoot().addAppender(appender);
+      Logger.getRoot().addAppender(appender);
     } catch(Exception e) {
       LogLog.error("Could not initialize log4j.");
     }
@@ -56,23 +56,23 @@
 
     int i = 0;
 
-    // In the lines below, the category names are chosen as an aid in
-    // remembering their priority values. In general, the category
+    // In the lines below, the logger names are chosen as an aid in
+    // remembering their priority values. In general, the logger
     // names should have no bearing to priority values.
     
-    Category ERR = Category.getInstance("ERR");
+    Logger ERR = Logger.getInstance("ERR");
     ERR.setPriority(Priority.ERROR);
-    Category INF = Category.getInstance("INF");
+    Logger INF = Logger.getInstance("INF");
     INF.setPriority(Priority.INFO);
-    Category INF_ERR = Category.getInstance("INF.ERR");
+    Logger INF_ERR = Logger.getInstance("INF.ERR");
     INF_ERR.setPriority(Priority.ERROR);
-    Category DEB = Category.getInstance("DEB");
+    Logger DEB = Logger.getInstance("DEB");
     DEB.setPriority(Priority.DEBUG);
     
-    // Note: categories with undefined priority 
-    Category INF_UNDEF = Category.getInstance("INF.UNDEF");
-    Category INF_ERR_UNDEF = Category.getInstance("INF.ERR.UNDEF");    
-    Category UNDEF = Category.getInstance("UNDEF");   
+    // Note: Loggers with undefined priority 
+    Logger INF_UNDEF = Logger.getInstance("INF.UNDEF");
+    Logger INF_ERR_UNDEF = Logger.getInstance("INF.ERR.UNDEF");    
+    Logger UNDEF = Logger.getInstance("UNDEF");   
 
 
     // These should all log.----------------------------

Modified: logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/test/Shallow.java
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/test/Shallow.java?rev=370187&r1=370186&r2=370187&view=diff
==============================================================================
--- logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/test/Shallow.java (original)
+++ logging/sandbox/log4j/log4jMini/trunk/src/java/org/apache/log4j/test/Shallow.java Wed Jan 18 09:05:18 2006
@@ -12,7 +12,7 @@
 */
 public class Shallow {
   
-  static Category cat = Category.getInstance(Shallow.class);
+  static Logger cat = Logger.getInstance(Shallow.class);
   
   public 
   static 
@@ -33,7 +33,7 @@
 
   static 
   void init(String file, String format) {
-    Category root = Category.getRoot();
+    Logger root = Logger.getRoot();
     Layout layout = new PatternLayout(format);
     try {
       root.addAppender(new FileAppender(layout, file));
@@ -46,7 +46,7 @@
   void test() {
     int i = -1; 
 
-    Category root = Category.getRoot();
+    Logger root = Logger.getRoot();
     cat.debug("Message " + ++i);
     root.debug("Message " + i);
     cat.info ("Message " + ++i);



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org