ceki        2004/11/20 03:27:19

  Modified:    src/java/org/apache/log4j/spi/location LocationInfo.java
                        LegacyExtractor.java
                        StackTraceElementExtractor.java
               tests/input/pattern patternLayout11.properties
                        patternLayout14.properties
                        patternLayout.mdc.1.properties
                        patternLayout5.properties patternLayout4.properties
                        patternLayout3.properties
                        patternLayout12.properties
                        patternLayout9.properties patternLayout7.properties
                        patternLayout13.properties
                        patternLayout8.properties patternLayout1.properties
                        patternLayout10.properties
                        patternLayout2.properties patternLayout6.properties
               src/java/org/apache/log4j PropertyConfigurator.java
                        AsyncAppender.java
               src/java/org/apache/log4j/pattern NamedPatternConverter.java
                        ClassNamePatternConverter.java
               src/java/org/apache/log4j/spi RootCategory.java
                        RootLogger.java LoggingEvent.java
               src/java/org/apache/log4j/varia ListAppender.java
  Log:
  - Ensuring that test cases run correctly.
  - Fixed problem with null return values in LocationInfo and 
StackElementExtractor.
  - Fixed problem deferred logging in o.a.l.varia.ListAppender
  
  Revision  Changes    Path
  1.5       +3 -3      
logging-log4j/src/java/org/apache/log4j/spi/location/LocationInfo.java
  
  Index: LocationInfo.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/spi/location/LocationInfo.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- LocationInfo.java 18 Nov 2004 11:33:13 -0000      1.4
  +++ LocationInfo.java 20 Nov 2004 11:27:18 -0000      1.5
  @@ -99,15 +99,15 @@
          location information, especially between the parentheses.
   
       */
  -  public LocationInfo(Throwable t, String fqnOfCallingClass) {
  +  public LocationInfo(Throwable t, String fqnOfInvokingClass) {
       if (t == null) {
         return;
       }
       
       if(PlatformInfo.hasStackTraceElement()) {
  -      StackTraceElementExtractor.extract(this, t, fqnOfCallingClass);
  +      StackTraceElementExtractor.extract(this, t, fqnOfInvokingClass);
       } else {
  -      LegacyExtractor.extract(this, t, fqnOfCallingClass);  
  +      LegacyExtractor.extract(this, t, fqnOfInvokingClass);  
       }
     }
   
  
  
  
  1.5       +3 -3      
logging-log4j/src/java/org/apache/log4j/spi/location/LegacyExtractor.java
  
  Index: LegacyExtractor.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/spi/location/LegacyExtractor.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- LegacyExtractor.java      10 Sep 2004 15:09:19 -0000      1.4
  +++ LegacyExtractor.java      20 Nov 2004 11:27:18 -0000      1.5
  @@ -40,11 +40,11 @@
     private LegacyExtractor() {
     }
   
  -  static void extract(LocationInfo li, Throwable t, String 
fqnOfCallingClass) {
  +  static void extract(LocationInfo li, Throwable t, String 
fqnOfInvokingClass) {
       // on AS400, package path separator in stack trace is not dot '.', 
       // but slash '/'
       if (PlatformInfo.isOnAS400()) {
  -      fqnOfCallingClass = fqnOfCallingClass.replace('.', '/');
  +      fqnOfInvokingClass = fqnOfInvokingClass.replace('.', '/');
       }
       String s;
   
  @@ -67,7 +67,7 @@
       // This method of searching may not be fastest but it's safer
       // than counting the stack depth which is not guaranteed to be
       // constant across JVM implementations.
  -    ibegin = s.lastIndexOf(fqnOfCallingClass);
  +    ibegin = s.lastIndexOf(fqnOfInvokingClass);
   
       if (ibegin == -1) {
         return;
  
  
  
  1.2       +22 -9     
logging-log4j/src/java/org/apache/log4j/spi/location/StackTraceElementExtractor.java
  
  Index: StackTraceElementExtractor.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/spi/location/StackTraceElementExtractor.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- StackTraceElementExtractor.java   7 Sep 2004 18:58:42 -0000       1.1
  +++ StackTraceElementExtractor.java   20 Nov 2004 11:27:18 -0000      1.2
  @@ -57,7 +57,7 @@
       } 
     }
   
  -  static void extract(LocationInfo li, Throwable t, String 
fqnOfCallingClass) {
  +  static void extract(LocationInfo li, Throwable t, String 
fqnOfInvokingClass) {
       if (t == null) {
         return;
       }
  @@ -69,20 +69,32 @@
         boolean match = false;
         for (int i = 0; i < stes.length; i++) {
           if (((String) getClassName.invoke(stes[i], nullArgs)).equals(
  -              fqnOfCallingClass)) {
  +            fqnOfInvokingClass)) {
             match = true;
           } else if(match) {
             location = stes[i];
             break;
  -        }
  +        }        
         }
       } catch (Throwable e) {
  -      // some trouble worth announcing...
  +      // Extraction failed, not much we could do now. We can't event log 
this 
  +      // failure because if there is one failure, there may be many others 
which 
  +      // are likely to follow. As location extraction is done on a 
best-effort 
  +      // basis, silence is preferable to overwhelming the user...
  +    }
  +    
  +    // If we failed to extract the location line, then default to 
LocationInfo.NA
  +    if(location == null) {
  +      li.className = LocationInfo.NA;
  +      li.fileName = LocationInfo.NA;
  +      li.lineNumber = LocationInfo.NA;
  +      li.methodName = LocationInfo.NA;
  +    } else {  // otherwise, get the real info    
  +      setClassName(li, location);
  +      setFileName(li, location);
  +      setMethodName(li, location);
  +      setLineNumber(li, location);
       }
  -    setClassName(li, location);
  -    setFileName(li, location);
  -    setMethodName(li, location);
  -    setLineNumber(li, location);
     }
   
     /**
  @@ -93,7 +105,8 @@
       try {
         li.className = (String) getClassName.invoke(location, nullArgs);
       } catch (Throwable e) {
  -    } // this should work, shouldn't it?
  +      li.className = LocationInfo.NA;
  +    } 
     }
   
     static void setFileName(LocationInfo li, Object location) {
  
  
  
  1.2       +6 -1      
logging-log4j/tests/input/pattern/patternLayout11.properties
  
  Index: patternLayout11.properties
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/tests/input/pattern/patternLayout11.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- patternLayout11.properties        18 Nov 2004 19:27:06 -0000      1.1
  +++ patternLayout11.properties        20 Nov 2004 11:27:18 -0000      1.2
  @@ -3,4 +3,9 @@
   log4j.appender.testAppender.File=output/temp
   log4j.appender.testAppender.Append=false
   log4j.appender.testAppender.layout=org.apache.log4j.PatternLayout
  -log4j.appender.testAppender.layout.ConversionPattern=%-5p [%t] %c{2}: %m%n
  \ No newline at end of file
  +log4j.appender.testAppender.layout.ConversionPattern=%-5p [%t] %c{2}: %m%n
  +
  +#  Prevent internal log4j DEBUG messages from polluting the output. 
  +log4j.logger.org.apache.log4j.PropertyConfigurator=INFO
  +log4j.logger.org.apache.log4j.config.PropertySetter=INFO
  +log4j.logger.org.apache.log4j.FileAppender=INFO
  
  
  
  1.2       +5 -0      
logging-log4j/tests/input/pattern/patternLayout14.properties
  
  Index: patternLayout14.properties
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/tests/input/pattern/patternLayout14.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- patternLayout14.properties        18 Nov 2004 19:27:06 -0000      1.1
  +++ patternLayout14.properties        20 Nov 2004 11:27:18 -0000      1.2
  @@ -4,3 +4,8 @@
   log4j.appender.testAppender.Append=false
   log4j.appender.testAppender.layout=pattern.MyPatternLayout
   log4j.appender.testAppender.layout.ConversionPattern=%5p %-4counter - %m%n
  +
  +#  Prevent internal log4j DEBUG messages from polluting the output. 
  +log4j.logger.org.apache.log4j.PropertyConfigurator=INFO
  +log4j.logger.org.apache.log4j.config.PropertySetter=INFO
  +log4j.logger.org.apache.log4j.FileAppender=INFO
  
  
  
  1.2       +6 -1      
logging-log4j/tests/input/pattern/patternLayout.mdc.1.properties
  
  Index: patternLayout.mdc.1.properties
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/tests/input/pattern/patternLayout.mdc.1.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- patternLayout.mdc.1.properties    18 Nov 2004 19:27:06 -0000      1.1
  +++ patternLayout.mdc.1.properties    20 Nov 2004 11:27:18 -0000      1.2
  @@ -3,4 +3,9 @@
   log4j.appender.testAppender.File=output/temp
   log4j.appender.testAppender.Append=false
   log4j.appender.testAppender.layout=org.apache.log4j.PatternLayout 
  -log4j.appender.testAppender.layout.ConversionPattern=%-5p - %m %X
  \ No newline at end of file
  +log4j.appender.testAppender.layout.ConversionPattern=%-5p - %m %X%n
  +
  +#  Prevent internal log4j DEBUG messages from polluting the output. 
  +log4j.logger.org.apache.log4j.PropertyConfigurator=INFO
  +log4j.logger.org.apache.log4j.config.PropertySetter=INFO
  +log4j.logger.org.apache.log4j.FileAppender=INFO
  
  
  
  1.2       +6 -1      
logging-log4j/tests/input/pattern/patternLayout5.properties
  
  Index: patternLayout5.properties
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/tests/input/pattern/patternLayout5.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- patternLayout5.properties 18 Nov 2004 19:27:06 -0000      1.1
  +++ patternLayout5.properties 20 Nov 2004 11:27:18 -0000      1.2
  @@ -3,4 +3,9 @@
   log4j.appender.testAppender.File=output/temp
   log4j.appender.testAppender.Append=false
   log4j.appender.testAppender.layout=org.apache.log4j.PatternLayout
  -log4j.appender.testAppender.layout.ConversionPattern=%d{dd MMM yyyy 
HH:mm:ss,SSS} [%t] %-5p %.16c - %m%n
  \ No newline at end of file
  +log4j.appender.testAppender.layout.ConversionPattern=%d{dd MMM yyyy 
HH:mm:ss,SSS} [%t] %-5p %.16c - %m%n
  +
  +#  Prevent internal log4j DEBUG messages from polluting the output. 
  +log4j.logger.org.apache.log4j.PropertyConfigurator=INFO
  +log4j.logger.org.apache.log4j.config.PropertySetter=INFO
  +log4j.logger.org.apache.log4j.FileAppender=INFO
  
  
  
  1.2       +6 -1      
logging-log4j/tests/input/pattern/patternLayout4.properties
  
  Index: patternLayout4.properties
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/tests/input/pattern/patternLayout4.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- patternLayout4.properties 18 Nov 2004 19:27:06 -0000      1.1
  +++ patternLayout4.properties 20 Nov 2004 11:27:18 -0000      1.2
  @@ -3,4 +3,9 @@
   log4j.appender.testAppender.File=output/temp
   log4j.appender.testAppender.Append=false 
   log4j.appender.testAppender.layout=org.apache.log4j.PatternLayout 
  -log4j.appender.testAppender.layout.ConversionPattern=%d{DATE} [%t] %-5p 
%.16c - %m%n
  \ No newline at end of file
  +log4j.appender.testAppender.layout.ConversionPattern=%d{DATE} [%t] %-5p 
%.16c - %m%n
  +
  +#  Prevent internal log4j DEBUG messages from polluting the output. 
  +log4j.logger.org.apache.log4j.PropertyConfigurator=INFO
  +log4j.logger.org.apache.log4j.config.PropertySetter=INFO
  +log4j.logger.org.apache.log4j.FileAppender=INFO
  
  
  
  1.2       +6 -1      
logging-log4j/tests/input/pattern/patternLayout3.properties
  
  Index: patternLayout3.properties
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/tests/input/pattern/patternLayout3.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- patternLayout3.properties 18 Nov 2004 19:27:06 -0000      1.1
  +++ patternLayout3.properties 20 Nov 2004 11:27:18 -0000      1.2
  @@ -3,4 +3,9 @@
   log4j.appender.testAppender.File=output/temp
   log4j.appender.testAppender.Append=false
   log4j.appender.testAppender.layout=org.apache.log4j.PatternLayout  
  -log4j.appender.testAppender.layout.ConversionPattern=%d{yyyy-MM-dd 
HH:mm:ss,SSS} [%t] %-5p %.16c - %m%n
  \ No newline at end of file
  +log4j.appender.testAppender.layout.ConversionPattern=%d{yyyy-MM-dd 
HH:mm:ss,SSS} [%t] %-5p %.16c - %m%n
  +
  +#  Prevent internal log4j DEBUG messages from polluting the output. 
  +log4j.logger.org.apache.log4j.PropertyConfigurator=INFO
  +log4j.logger.org.apache.log4j.config.PropertySetter=INFO
  +log4j.logger.org.apache.log4j.FileAppender=INFO
  
  
  
  1.2       +6 -1      
logging-log4j/tests/input/pattern/patternLayout12.properties
  
  Index: patternLayout12.properties
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/tests/input/pattern/patternLayout12.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- patternLayout12.properties        18 Nov 2004 19:27:06 -0000      1.1
  +++ patternLayout12.properties        20 Nov 2004 11:27:18 -0000      1.2
  @@ -3,4 +3,9 @@
   log4j.appender.testAppender.File=output/temp
   log4j.appender.testAppender.Append=false
   log4j.appender.testAppender.layout=org.apache.log4j.PatternLayout
  -log4j.appender.testAppender.layout.ConversionPattern=[%t] %-5p %C.%M(%F:%L): 
%m%n
  \ No newline at end of file
  +log4j.appender.testAppender.layout.ConversionPattern=[%t] %-5p %C.%M(%F:%L): 
%m%n
  +
  +#  Prevent internal log4j DEBUG messages from polluting the output. 
  +log4j.logger.org.apache.log4j.PropertyConfigurator=INFO
  +log4j.logger.org.apache.log4j.config.PropertySetter=INFO
  +log4j.logger.org.apache.log4j.FileAppender=INFO
  
  
  
  1.2       +6 -1      
logging-log4j/tests/input/pattern/patternLayout9.properties
  
  Index: patternLayout9.properties
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/tests/input/pattern/patternLayout9.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- patternLayout9.properties 18 Nov 2004 19:27:06 -0000      1.1
  +++ patternLayout9.properties 20 Nov 2004 11:27:18 -0000      1.2
  @@ -3,4 +3,9 @@
   log4j.appender.testAppender.File=output/temp
   log4j.appender.testAppender.Append=false
   log4j.appender.testAppender.layout=org.apache.log4j.PatternLayout
  -log4j.appender.testAppender.layout.ConversionPattern=[%t] %-5p %.16c : %m%n
  \ No newline at end of file
  +log4j.appender.testAppender.layout.ConversionPattern=[%t] %-5p %.16c : %m%n
  +
  +#  Prevent internal log4j DEBUG messages from polluting the output. 
  +log4j.logger.org.apache.log4j.PropertyConfigurator=INFO
  +log4j.logger.org.apache.log4j.config.PropertySetter=INFO
  +log4j.logger.org.apache.log4j.FileAppender=INFO
  
  
  
  1.2       +5 -0      
logging-log4j/tests/input/pattern/patternLayout7.properties
  
  Index: patternLayout7.properties
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/tests/input/pattern/patternLayout7.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- patternLayout7.properties 18 Nov 2004 19:27:06 -0000      1.1
  +++ patternLayout7.properties 20 Nov 2004 11:27:18 -0000      1.2
  @@ -4,3 +4,8 @@
   log4j.appender.testAppender.Append=false
   log4j.appender.testAppender.layout=org.apache.log4j.PatternLayout
   log4j.appender.testAppender.layout.ConversionPattern=%d{HH:mm:ss,SSS} [%t] 
%-5p %.16c - %m%n
  +
  +#  Prevent internal log4j DEBUG messages from polluting the output. 
  +log4j.logger.org.apache.log4j.PropertyConfigurator=INFO
  +log4j.logger.org.apache.log4j.config.PropertySetter=INFO
  +log4j.logger.org.apache.log4j.FileAppender=INFO
  
  
  
  1.2       +6 -1      
logging-log4j/tests/input/pattern/patternLayout13.properties
  
  Index: patternLayout13.properties
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/tests/input/pattern/patternLayout13.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- patternLayout13.properties        18 Nov 2004 19:27:06 -0000      1.1
  +++ patternLayout13.properties        20 Nov 2004 11:27:18 -0000      1.2
  @@ -3,4 +3,9 @@
   log4j.appender.testAppender.File=  output/temp
   log4j.appender.testAppender.Append=false
   log4j.appender.testAppender.layout=org.apache.log4j.PatternLayout
  -log4j.appender.testAppender.layout.ConversionPattern=[%t] %-5p 
%C{3}.%M(%F:%L): %m%n
  \ No newline at end of file
  +log4j.appender.testAppender.layout.ConversionPattern=[%t] %-5p 
%C{3}.%M(%F:%L): %m%n
  +
  +#  Prevent internal log4j DEBUG messages from polluting the output. 
  +log4j.logger.org.apache.log4j.PropertyConfigurator=INFO
  +log4j.logger.org.apache.log4j.config.PropertySetter=INFO
  +log4j.logger.org.apache.log4j.FileAppender=INFO
  
  
  
  1.2       +6 -1      
logging-log4j/tests/input/pattern/patternLayout8.properties
  
  Index: patternLayout8.properties
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/tests/input/pattern/patternLayout8.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- patternLayout8.properties 18 Nov 2004 19:27:06 -0000      1.1
  +++ patternLayout8.properties 20 Nov 2004 11:27:18 -0000      1.2
  @@ -3,4 +3,9 @@
   log4j.appender.testAppender.File=output/temp
   log4j.appender.testAppender.Append=false
   log4j.appender.testAppender.layout=org.apache.log4j.PatternLayout
  -log4j.appender.testAppender.layout.ConversionPattern=%r [%t] %-5p %.16c - 
%m%n
  \ No newline at end of file
  +log4j.appender.testAppender.layout.ConversionPattern=%r [%t] %-5p %.16c - 
%m%n
  +
  +#  Prevent internal log4j DEBUG messages from polluting the output. 
  +log4j.logger.org.apache.log4j.PropertyConfigurator=INFO
  +log4j.logger.org.apache.log4j.config.PropertySetter=INFO
  +log4j.logger.org.apache.log4j.FileAppender=INFO
  
  
  
  1.2       +7 -2      
logging-log4j/tests/input/pattern/patternLayout1.properties
  
  Index: patternLayout1.properties
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/tests/input/pattern/patternLayout1.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- patternLayout1.properties 18 Nov 2004 19:27:06 -0000      1.1
  +++ patternLayout1.properties 20 Nov 2004 11:27:18 -0000      1.2
  @@ -1,6 +1,11 @@
  -log4j.rootCategory=DEBUG, testAppender
  +log4j.rootLogger=DEBUG, testAppender
   log4j.appender.testAppender=org.apache.log4j.FileAppender
   log4j.appender.testAppender.file=output/temp
   log4j.appender.testAppender.Append=false
   log4j.appender.testAppender.layout=org.apache.log4j.PatternLayout 
  -log4j.appender.testAppender.layout.ConversionPattern=%-5p - %m%n
  \ No newline at end of file
  +log4j.appender.testAppender.layout.ConversionPattern=%-5p - %m%n
  +
  +#  Prevent internal log4j DEBUG messages from polluting the output. 
  +log4j.logger.org.apache.log4j.PropertyConfigurator=INFO
  +log4j.logger.org.apache.log4j.config.PropertySetter=INFO
  +log4j.logger.org.apache.log4j.FileAppender=INFO
  
  
  
  1.2       +6 -1      
logging-log4j/tests/input/pattern/patternLayout10.properties
  
  Index: patternLayout10.properties
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/tests/input/pattern/patternLayout10.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- patternLayout10.properties        18 Nov 2004 19:27:06 -0000      1.1
  +++ patternLayout10.properties        20 Nov 2004 11:27:18 -0000      1.2
  @@ -3,4 +3,9 @@
   log4j.appender.testAppender.File= output/temp 
   log4j.appender.testAppender.Append= false 
   log4j.appender.testAppender.layout=org.apache.log4j.PatternLayout 
  -log4j.appender.testAppender.layout.ConversionPattern=[%t] %-5p %l: %m%n
  \ No newline at end of file
  +log4j.appender.testAppender.layout.ConversionPattern=[%t] %-5p %l: %m%n
  +
  +#  Prevent internal log4j DEBUG messages from polluting the output. 
  +log4j.logger.org.apache.log4j.PropertyConfigurator=INFO
  +log4j.logger.org.apache.log4j.config.PropertySetter=INFO
  +log4j.logger.org.apache.log4j.FileAppender=INFO
  
  
  
  1.2       +5 -0      
logging-log4j/tests/input/pattern/patternLayout2.properties
  
  Index: patternLayout2.properties
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/tests/input/pattern/patternLayout2.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- patternLayout2.properties 18 Nov 2004 19:27:06 -0000      1.1
  +++ patternLayout2.properties 20 Nov 2004 11:27:18 -0000      1.2
  @@ -4,3 +4,8 @@
   log4j.appender.testAppender.Append= false 
   log4j.appender.testAppender.layout=org.apache.log4j.PatternLayout  
   log4j.appender.testAppender.layout.ConversionPattern=%d{ISO8601} [%t] %-5p 
%.16c - %m%n
  +
  +#  Prevent internal log4j DEBUG messages from polluting the output. 
  +log4j.logger.org.apache.log4j.PropertyConfigurator=INFO
  +log4j.logger.org.apache.log4j.config.PropertySetter=INFO
  +log4j.logger.org.apache.log4j.FileAppender=INFO
  
  
  
  1.2       +7 -1      
logging-log4j/tests/input/pattern/patternLayout6.properties
  
  Index: patternLayout6.properties
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/tests/input/pattern/patternLayout6.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- patternLayout6.properties 18 Nov 2004 19:27:06 -0000      1.1
  +++ patternLayout6.properties 20 Nov 2004 11:27:18 -0000      1.2
  @@ -3,4 +3,10 @@
   log4j.appender.testAppender.File=output/temp
   log4j.appender.testAppender.Append=false
   log4j.appender.testAppender.layout=org.apache.log4j.PatternLayout
  -log4j.appender.testAppender.layout.ConversionPattern=%d{ABSOLUTE} [%t] %-5p 
%.16c - %m%n
  \ No newline at end of file
  +log4j.appender.testAppender.layout.ConversionPattern=%d{ABSOLUTE} [%t] %-5p 
%.16c - %m%n
  +
  +
  +#  Prevent internal log4j DEBUG messages from polluting the output. 
  +log4j.logger.org.apache.log4j.PropertyConfigurator=INFO
  +log4j.logger.org.apache.log4j.config.PropertySetter=INFO
  +log4j.logger.org.apache.log4j.FileAppender=INFO
  
  
  
  1.71      +77 -55    
logging-log4j/src/java/org/apache/log4j/PropertyConfigurator.java
  
  Index: PropertyConfigurator.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/PropertyConfigurator.java,v
  retrieving revision 1.70
  retrieving revision 1.71
  diff -u -r1.70 -r1.71
  --- PropertyConfigurator.java 19 Nov 2004 15:20:06 -0000      1.70
  +++ PropertyConfigurator.java 20 Nov 2004 11:27:19 -0000      1.71
  @@ -1,12 +1,12 @@
   /*
    * Copyright 1999,2004 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.
  @@ -14,7 +14,6 @@
    * limitations under the License.
    */
   
  -
   // Contibutors: "Luke Blanshard" <[EMAIL PROTECTED]>
   //              "Mark DONSZELMANN" <[EMAIL PROTECTED]>
   //               Anders Kristensen <[EMAIL PROTECTED]>
  @@ -108,7 +107,7 @@
     protected Hashtable registry = new Hashtable(11);
     protected LoggerFactory loggerFactory = new DefaultCategoryFactory();
     protected List errorList = new Vector();
  -  
  +
     /**
       Read configuration from a file. <b>The existing configuration is
       not cleared nor reset.</b> If you require a different behavior,
  @@ -310,7 +309,8 @@
         props.load(istream);
         istream.close();
       } catch (IOException e) {
  -      String errMsg = "Could not read configuration file [" + configFileName 
+ "].";
  +      String errMsg =
  +        "Could not read configuration file [" + configFileName + "].";
         addError(new ErrorItem(errMsg, e));
         getLogger(repo).error(errMsg, e);
         return;
  @@ -346,7 +346,7 @@
       new PropertyConfigurator().doConfigure(
         properties, LogManager.getLoggerRepository());
     }
  - 
  +
     /**
        Read configuration options from <code>properties</code>.
   
  @@ -355,37 +355,46 @@
     public void doConfigure(Properties properties, LoggerRepository 
repository) {
       String value = properties.getProperty(DEBUG_KEY);
   
  -    boolean attached = false;
  -    if (value != null && OptionConverter.toBoolean(value, true)) {
  -      attachTemporaryConsoleAppender(repository);
  -      attached = true;
  -    }
  +    try {
  +      // we start by attaching a temporary list appender
  +      attachListAppender(repository);
   
  -    // As soon as we start configuration process, the pristine flag is set 
to 
  -    // false.
  -    repository.setPristine(false);
  -    
  -    String thresholdStr =
  -      OptionConverter.findAndSubst(THRESHOLD_PREFIX, properties);
  +      boolean attachedConsoleApepnder = false;
  +      if ((value != null) && OptionConverter.toBoolean(value, true)) {
  +        attachTemporaryConsoleAppender(repository);
  +        attachedConsoleApepnder = true;
  +      }
   
  -    if (thresholdStr != null) {
  -      repository.setThreshold(OptionConverter.toLevel(thresholdStr, 
Level.ALL));
  -      getLogger(repository).debug(
  -        "Hierarchy threshold set to [" + repository.getThreshold() + "].");
  -    }
  +      // As soon as we start configuration process, the pristine flag is set 
to 
  +      // false.
  +      repository.setPristine(false);
  +
  +      String thresholdStr =
  +        OptionConverter.findAndSubst(THRESHOLD_PREFIX, properties);
  +
  +      if (thresholdStr != null) {
  +        repository.setThreshold(
  +          OptionConverter.toLevel(thresholdStr, Level.ALL));
  +        getLogger(repository).debug(
  +          "Hierarchy threshold set to [" + repository.getThreshold() + "].");
  +      }
   
  -    configureRootCategory(properties, repository);
  -    configureLoggerFactory(properties);
  -    parseCatsAndRenderers(properties, repository);
  +      configureRootCategory(properties, repository);
  +      configureLoggerFactory(properties);
  +      parseCatsAndRenderers(properties, repository);
   
  -    getLogger(repository).debug("Finished configuring.");
  +      getLogger(repository).debug("Finished configuring.");
   
  -    if(attached) {
  -      detachTemporaryConsoleAppender(repository, errorList);
  +      if (attachedConsoleApepnder) {
  +        detachTemporaryConsoleAppender(repository, errorList);
  +      }
  +
  +      // We don't want to hold references to appenders preventing their
  +      // garbage collection.
  +      registry.clear();
  +    } finally {
  +      detachListAppender(repository);
       }
  -    // We don't want to hold references to appenders preventing their
  -    // garbage collection.
  -    registry.clear();
     }
   
     /**
  @@ -393,14 +402,16 @@
      */
     public void doConfigure(java.net.URL configURL, LoggerRepository 
repository) {
       Properties props = new Properties();
  -    getLogger(repository).debug("Reading configuration from URL {}", 
configURL);
  +    getLogger(repository).debug(
  +      "Reading configuration from URL {}", configURL);
   
       try {
         InputStream in = configURL.openStream();
         props.load(in);
         in.close();
       } catch (java.io.IOException e) {
  -      String errMsg = "Could not read configuration file from URL [" + 
configURL + "].";
  +      String errMsg =
  +        "Could not read configuration file from URL [" + configURL + "].";
         addError(new ErrorItem(errMsg, e));
         getLogger(repository).error(errMsg, e);
         return;
  @@ -466,12 +477,14 @@
       }
   
       if (value == null) {
  -      getLogger(repository).debug("Could not find root logger information. 
Is this OK?");
  +      getLogger(repository).debug(
  +        "Could not find root logger information. Is this OK?");
       } else {
         Logger root = repository.getRootLogger();
   
         synchronized (root) {
  -        parseCategory(repository, props, root, effectiveFrefix, 
INTERNAL_ROOT_NAME, value);
  +        parseCategory(
  +          repository, props, root, effectiveFrefix, INTERNAL_ROOT_NAME, 
value);
         }
       }
     }
  @@ -517,8 +530,9 @@
     /**
        Parse the additivity option for a non-root category.
      */
  -  void parseAdditivityForLogger(LoggerRepository repository,
  -    Properties props, Logger cat, String loggerName) {
  +  void parseAdditivityForLogger(
  +    LoggerRepository repository, Properties props, Logger cat,
  +    String loggerName) {
       String value =
         OptionConverter.findAndSubst(ADDITIVITY_PREFIX + loggerName, props);
       getLogger(repository).debug(
  @@ -536,9 +550,9 @@
     /**
        This method must work for the root category as well.
      */
  -  void parseCategory(LoggerRepository repository,
  -    Properties props, Logger logger, String optionKey, String loggerName,
  -    String value) {
  +  void parseCategory(
  +    LoggerRepository repository, Properties props, Logger logger,
  +    String optionKey, String loggerName, String value) {
       getLogger(repository).debug(
         "Parsing for [{}] with value=[{}].", loggerName, value);
   
  @@ -571,7 +585,8 @@
           logger.setLevel(OptionConverter.toLevel(levelStr, Level.DEBUG));
         }
   
  -      getLogger(repository).debug("Category {} set to {}.", loggerName, 
logger.getLevel());
  +      getLogger(repository).debug(
  +        "Category {} set to {}.", loggerName, logger.getLevel());
       }
   
       // Begin by removing all existing appenders.
  @@ -587,7 +602,8 @@
           continue;
         }
   
  -      getLogger(repository).debug("Parsing appender named \"{}\".", 
appenderName);
  +      getLogger(repository).debug(
  +        "Parsing appender named \"{}\".", appenderName);
         appender = parseAppender(repository, props, appenderName);
   
         if (appender != null) {
  @@ -596,11 +612,13 @@
       }
     }
   
  -  Appender parseAppender(LoggerRepository repository, Properties props, 
String appenderName) {
  +  Appender parseAppender(
  +    LoggerRepository repository, Properties props, String appenderName) {
       Appender appender = registryGet(appenderName);
   
       if ((appender != null)) {
  -      getLogger(repository).debug("Appender \"{}\" was already parsed.", 
appenderName);
  +      getLogger(repository).debug(
  +        "Appender \"{}\" was already parsed.", appenderName);
   
         return appender;
       }
  @@ -614,7 +632,8 @@
           props, prefix, org.apache.log4j.Appender.class, null);
   
       if (appender == null) {
  -      String errMsg = "Could not instantiate appender named 
\""+appenderName+"\".";
  +      String errMsg =
  +        "Could not instantiate appender named \"" + appenderName + "\".";
         addError(new ErrorItem(errMsg));
         getLogger(repository).error(errMsg);
         return null;
  @@ -623,21 +642,25 @@
       appender.setName(appenderName);
   
       if (appender instanceof OptionHandler) {
  -      String layoutClassName = OptionConverter.findAndSubst(layoutPrefix, 
props);
  +      String layoutClassName =
  +        OptionConverter.findAndSubst(layoutPrefix, props);
  +
         // if there are layout related directives, we process these now
  -      if(layoutClassName != null) {
  +      if (layoutClassName != null) {
           // Trim layoutClassName to avoid trailing spaces that cause problems.
           Layout layout =
  -          (Layout) 
OptionConverter.instantiateByClassName(layoutClassName.trim(),
  -            Layout.class, null);
  +          (Layout) OptionConverter.instantiateByClassName(
  +            layoutClassName.trim(), Layout.class, null);
   
           if (layout != null) {
             appender.setLayout(layout);
  -          getLogger(repository).debug("Parsing layout options for \"" + 
appenderName + "\".");
  +          getLogger(repository).debug(
  +            "Parsing layout options for \"" + appenderName + "\".");
   
             PropertySetter.setProperties(layout, props, layoutPrefix + ".");
             activateOptions(layout);
  -          getLogger(repository).debug("End of parsing for \"" + appenderName 
+ "\".");
  +          getLogger(repository).debug(
  +            "End of parsing for \"" + appenderName + "\".");
           }
         }
   
  @@ -650,7 +673,7 @@
   
       return appender;
     }
  -  
  +
     void activateOptions(Object obj) {
       if (obj instanceof OptionHandler) {
         ((OptionHandler) obj).activateOptions();
  @@ -668,5 +691,4 @@
     public List getErrorList() {
       return errorList;
     }
  -
  -}
  \ No newline at end of file
  +}
  
  
  
  1.40      +3 -12     
logging-log4j/src/java/org/apache/log4j/AsyncAppender.java
  
  Index: AsyncAppender.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/AsyncAppender.java,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- AsyncAppender.java        17 Nov 2004 21:25:23 -0000      1.39
  +++ AsyncAppender.java        20 Nov 2004 11:27:19 -0000      1.40
  @@ -85,18 +85,9 @@
     }
   
     public void append(LoggingEvent event) {
  -    // Set the NDC and thread name for the calling thread as these
  -    // LoggingEvent fields were not set at event creation time.
  -    event.getNDC();
  -    event.getThreadName();
  -
  -    // Get a copy of this thread's MDC.
  -    event.initializeProperties();
  -
  -    // we need to get the rendered message in case it changes between now
  -    // and handling by the worker thread
  -    event.getRenderedMessage();
  -    
  +    // extract all the thread dependent information now as later it will
  +    // be too late.
  +    event.prepareForSerialization();
       if (locationInfo) {
         event.getLocationInformation();
       }
  
  
  
  1.4       +0 -2      
logging-log4j/src/java/org/apache/log4j/pattern/NamedPatternConverter.java
  
  Index: NamedPatternConverter.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/pattern/NamedPatternConverter.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- NamedPatternConverter.java        27 Feb 2004 16:47:32 -0000      1.3
  +++ NamedPatternConverter.java        20 Nov 2004 11:27:19 -0000      1.4
  @@ -72,8 +72,6 @@
       buf.setLength(0);
   
       String n = getFullyQualifiedName(event);
  -    //System.out.println("qname: "+n);
  -
       if (precision <= 0) {
         buf.append(n);
       } else {
  
  
  
  1.9       +8 -2      
logging-log4j/src/java/org/apache/log4j/pattern/ClassNamePatternConverter.java
  
  Index: ClassNamePatternConverter.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/pattern/ClassNamePatternConverter.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ClassNamePatternConverter.java    16 Sep 2004 19:18:58 -0000      1.8
  +++ ClassNamePatternConverter.java    20 Nov 2004 11:27:19 -0000      1.9
  @@ -17,6 +17,7 @@
   package org.apache.log4j.pattern;
   
   import org.apache.log4j.spi.LoggingEvent;
  +import org.apache.log4j.spi.location.LocationInfo;
   
   /**
    * Most of the work is done in the parent class [EMAIL PROTECTED] 
  @@ -35,8 +36,13 @@
     }
     
     String getFullyQualifiedName(LoggingEvent event) {
  -        return 
event.getLocationInformation()!=null?event.getLocationInformation().getClassName():"";
  -      }
  +    LocationInfo li = event.getLocationInformation();
  +    if(li == null) {
  +      return LocationInfo.NA;
  +    } else {
  +         return li.getClassName();
  +    }
  +     }
     
     public String getName() {
         return NAME;
  
  
  
  1.14      +5 -4      
logging-log4j/src/java/org/apache/log4j/spi/RootCategory.java
  
  Index: RootCategory.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/spi/RootCategory.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- RootCategory.java 19 May 2004 09:29:03 -0000      1.13
  +++ RootCategory.java 20 Nov 2004 11:27:19 -0000      1.14
  @@ -17,8 +17,6 @@
   package org.apache.log4j.spi;
   
   import org.apache.log4j.*;
  -import org.apache.log4j.helpers.LogLog;
  -
   
   // Contibutors: Mathias Bogaert
   
  @@ -53,8 +51,11 @@
        @since 0.8.3 */
     public final void setLevel(Level level) {
       if (level == null) {
  -      LogLog.error(
  -        "You have tried to set a null level to root.", new Throwable());
  +      if (repository != null) {
  +        repository.addErrorItem(
  +          new ErrorItem(
  +            "You have tried to set a null level to root.", new Exception()));
  +      }
       } else {
         this.level = level;
       }
  
  
  
  1.3       +7 -8      
logging-log4j/src/java/org/apache/log4j/spi/RootLogger.java
  
  Index: RootLogger.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/spi/RootLogger.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- RootLogger.java   19 Nov 2004 15:19:07 -0000      1.2
  +++ RootLogger.java   20 Nov 2004 11:27:19 -0000      1.3
  @@ -1,12 +1,12 @@
   /*
    * Copyright 1999,2004 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.
  @@ -58,14 +58,13 @@
        @since 0.8.3 */
     public final void setLevel(Level level) {
       if (level == null) {
  -      if(repository != null) {
  -        repository.addErrorItem(new ErrorItem("You have tried to set a null 
level to root.", new Exception()));
  -      } else {
  -        throw new IllegalStateException("LoggerRepository has not been set");
  +      if (repository != null) {
  +        repository.addErrorItem(
  +          new ErrorItem(
  +            "You have tried to set a null level to root.", new Exception()));
         }
       } else {
         this.level = level;
       }
     }
  -
   }
  
  
  
  1.65      +5 -25     
logging-log4j/src/java/org/apache/log4j/spi/LoggingEvent.java
  
  Index: LoggingEvent.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/spi/LoggingEvent.java,v
  retrieving revision 1.64
  retrieving revision 1.65
  diff -u -r1.64 -r1.65
  --- LoggingEvent.java 7 Sep 2004 17:16:02 -0000       1.64
  +++ LoggingEvent.java 20 Nov 2004 11:27:19 -0000      1.65
  @@ -85,7 +85,9 @@
   
     /**
      * Fully qualified name of the calling category class. This field does not
  -   * survive serialization.
  +   * survive serialization. 
  +   * 
  +   * <p>Note that the getLocationInfo() method relies on this fact.
      */
     transient String fqnOfLoggerClass;
   
  @@ -279,30 +281,6 @@
       sequenceNumber = sequenceCount++;
     }
   
  -
  -  // TODO CG Remove these commented out lines
  -//  /**
  -//   * Alternate constructor to allow a string array to be passed in as the 
throwable.
  -//   */
  -//  public LoggingEvent(String fqnOfCategoryClass, Logger logger, long 
timeStamp, Level level, String threadName,
  -//    Object message, String ndc, Hashtable properties, String[] 
throwableStrRep, LocationInfo li) {
  -//    ndcLookupRequired = false;
  -//    this.logger = logger;
  -//    this.loggerName = logger.getName();
  -//    this.level = level;
  -//    this.message = message;
  -//
  -//    if (throwableStrRep != null) {
  -//      this.throwableInfo = new ThrowableInformation(throwableStrRep);
  -//    }
  -//    this.locationInfo = li;
  -//    this.fqnOfLoggerClass = fqnOfCategoryClass;
  -//    this.timeStamp = timeStamp;
  -//    this.threadName = threadName;
  -//    this.ndc = ndc;
  -//    this.properties = properties;
  -//  }
  -
     /**
      * Two events are considerd equal if they refer to the same instance, or if
      * both their timestamps and sequence numbers match.
  @@ -359,6 +337,8 @@
      * location information. In that case null is returned.</p>
      */
     public LocationInfo getLocationInformation() {
  +    // we rely on the fact that fqnOfLoggerClass does not survive
  +    // serialization
       if (locationInfo == null && fqnOfLoggerClass != null) {
         locationInfo = new LocationInfo(new Throwable(), fqnOfLoggerClass);
       }
  
  
  
  1.5       +7 -2      
logging-log4j/src/java/org/apache/log4j/varia/ListAppender.java
  
  Index: ListAppender.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/varia/ListAppender.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ListAppender.java 15 Nov 2004 17:40:57 -0000      1.4
  +++ ListAppender.java 20 Nov 2004 11:27:19 -0000      1.5
  @@ -28,8 +28,8 @@
    * java.util.List for late retrieval.
    *
    * Note:  This implemenation intentionally does not allow direct modification
  - * of the internal List model to reduce the synchronization complexity that 
this would
  - * require.
  + * of the internal List model to reduce the synchronization complexity that 
  + * this would require.
    *
    * @see org.apache.log4j.varia.ListModelAppender
    *
  @@ -59,6 +59,11 @@
      * @see 
org.apache.log4j.AppenderSkeleton#append(org.apache.log4j.spi.LoggingEvent)
      */
     protected void append(LoggingEvent event) {
  +    event.prepareForSerialization();
  +    
  +    // Extract location info now. Later it might not be possible.
  +    event.getLocationInformation();
  +    
       synchronized (model) {
         model.add(event);
       }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to