ceki        01/08/14 14:00:34

  Modified:    src/java/org/apache/log4j AsyncAppender.java
                        DailyRollingFileAppender.java FileAppender.java
                        Makefile RollingFileAppender.java
               src/java/org/apache/log4j/helpers PatternParser.java
               src/java/org/apache/log4j/spi LoggingEvent.java
               src/java/org/apache/log4j/test confParsing
  Removed:     src/java/org/apache/log4j CompositeRollingAppender.java
  Log:
  Added MDC support in AsyncAppender.
  
  Added bufferedIO support in FileAppender and subclasses.
  
  Removed CompositeRollingAppender because I do not understand and hence cannot 
maintain it.
  
  Revision  Changes    Path
  1.23      +3 -0      jakarta-log4j/src/java/org/apache/log4j/AsyncAppender.java
  
  Index: AsyncAppender.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/AsyncAppender.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- AsyncAppender.java        2001/07/26 11:16:48     1.22
  +++ AsyncAppender.java        2001/08/14 21:00:34     1.23
  @@ -108,6 +108,9 @@
       // LoggingEvent fields were not set at event creation time.
       event.getNDC();
       event.getThreadName();
  +    // Get a copy of this thread's MDC.
  +
  +    event.getMDCCopy();
       if(locationInfo) {
         event.getLocationInformation();        
       }
  
  
  
  1.17      +1 -1      
jakarta-log4j/src/java/org/apache/log4j/DailyRollingFileAppender.java
  
  Index: DailyRollingFileAppender.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/DailyRollingFileAppender.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- DailyRollingFileAppender.java     2001/07/26 11:16:48     1.16
  +++ DailyRollingFileAppender.java     2001/08/14 21:00:34     1.17
  @@ -300,7 +300,7 @@
       try {
         // This will also close the file. This is OK since multiple
         // close operations are safe.
  -      this.setFile(fileName, false);
  +      this.setFile(fileName, false, this.bufferedIO, this.bufferSize);
       }
       catch(IOException e) {
         errorHandler.error("setFile("+fileName+", false) call failed.");
  
  
  
  1.28      +73 -89    jakarta-log4j/src/java/org/apache/log4j/FileAppender.java
  
  Index: FileAppender.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/FileAppender.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- FileAppender.java 2001/08/13 15:12:10     1.27
  +++ FileAppender.java 2001/08/14 21:00:34     1.28
  @@ -27,10 +27,9 @@
   /**
      FileAppender appends log events to a file. 
      
  -   <b>Support for java.io.Writer and console appending has been
  -   deprecated and will be removed in the near future.</b> You are
  -   strongly encouraged to use the replacement solutions: {@link
  -   WriterAppender} and {@link ConsoleAppender}.
  +   <p>Support for <code>java.io.Writer</code> and console appending
  +   has been deprecated and then removed. See the replacement
  +   solutions: {@link WriterAppender} and {@link ConsoleAppender}.
      
   
      @author Ceki G&uuml;lc&uuml; */
  @@ -51,16 +50,13 @@
     protected String fileName = null;
   
     /**
  -     Is the QuietWriter ours or was it created and passed by the user?     
  -
  -     @deprecated FileAppender will not support streams passed by the
  -     user in the future. */
  -  protected boolean qwIsOurs = false;
  -
  -  /**
        Do we do bufferedIO? */
     protected boolean bufferedIO = false;
   
  +  /**
  +     How big should the IO buffer be? Default is 8K. */
  +  protected int bufferSize = 8*1024;
  +
   
     /**
        The default constructor does not do anything. 
  @@ -69,37 +65,25 @@
     FileAppender() {
     }
   
  -
     /**
  -     Instantiate a FileAppender and set the output destination to a
  -     new {@link OutputStreamWriter} initialized with <code>os</code>
  -     as its {@link OutputStream}.  
  -
  -     @deprecated <b>The functionality of this constructor form has
  -     been replaced by the {@link WriterAppender}. This constructor
  -     will be removed in the <em>near</em> term.</b>
  +    Instantiate a <code>FileAppender</code> and open the file
  +    designated by <code>filename</code>. The opened filename will
  +    become the output destination for this appender.
   
  -  */
  -  public
  -  FileAppender(Layout layout, OutputStream os) {
  -    super(layout, os);
  -  }
  -  
  -  /**
  -     Instantiate a FileAppender and set the output destination to
  -     <code>writer</code>.
  -
  -     <p>The <code>writer</code> must have been opened by the user.  
  +    <p>If the <code>append</code> parameter is true, the file will be
  +    appended to. Otherwise, the file designated by
  +    <code>filename</code> will be truncated before being opened.
   
  -     @deprecated <b>The functionality of constructor form has been
  -     replaced by the {@link WriterAppender}. This constructor will be
  -     removed in the <em>near</em> term.</b>
  +    <p>If the <code>bufferedIO</code> parameter is <code>true</code>,
  +    then buffered IO will be used to write to the output file. 
  +    
     */
     public
  -  FileAppender(Layout layout, Writer writer) {
  -    super(layout, writer);
  -  }                    
  -
  +  FileAppender(Layout layout, String filename, boolean append, boolean bufferedIO, 
  +            int bufferSize) throws IOException {
  +    this.layout = layout;
  +    this.setFile(filename, append, bufferedIO, bufferSize);
  +  }
   
     /**
       Instantiate a FileAppender and open the file designated by
  @@ -111,10 +95,9 @@
       <code>filename</code> will be truncated before being opened.
     */
     public
  -  FileAppender(Layout layout, String filename, boolean append)
  -                                      throws IOException {
  +  FileAppender(Layout layout, String filename, boolean append) throws IOException {
       this.layout = layout;
  -    this.setFile(filename, append);
  +    this.setFile(filename, append, false, bufferSize);
     }
   
     /**
  @@ -130,32 +113,18 @@
   
     /**
        The <b>File</b> property takes a string value which should be the
  -     name of the file to append to. Special values "System.out" or
  -     "System.err" are interpreted as the standard out and standard
  -     error streams.
  -
  -     <p><font color="#DD0044"><b>Note that the "System.out" or "System.err"
  -     options are deprecated. Please use {@link ConsoleAppender}
  -     instead.</b></font>
  -
  -     <p>If the option is set to "System.out" or "System.err" the
  -     output will go to the corresponding stream. Otherwise, if the
  -     option is set to the name of a file, then the file will be opened
  -     and output will go there.
  -     
  +     name of the file to append to. 
  +
  +     <p><font color="#DD0044"><b>Note that the special values
  +     "System.out" or "System.err" are no longer honored.</b></font>
  +   
        <p>Note: Actual opening of the file is made when {@link
        #activateOptions} is called, not when the options are set.  */
     public void setFile(String file) {
       // Trim spaces from both ends. The users probably does not want 
       // trailing spaces in file names.
       String val = file.trim();
  -    if(val.equalsIgnoreCase("System.out")) {
  -      setWriter(new OutputStreamWriter(System.out));
  -    } else if(val.equalsIgnoreCase("System.err")) {
  -      setWriter(new OutputStreamWriter(System.err));
  -    } else {
  -      fileName = val;
  -    }
  +    fileName = val;    
     }
   
     /** 
  @@ -172,23 +141,7 @@
     String getFile() {
       return fileName;
     }
  -  
  -  /**
  -     The <b>Append</b> option takes a boolean value. It is set to
  -     <code>true</code> by default. If true, then <code>File</code>
  -     will be opened in append mode by {@link #setFile setFile} (see
  -     above). Otherwise, {@link #setFile setFile} will open
  -     <code>File</code> in truncate mode.
   
  -     <p>Note: Actual opening of the file is made when {@link
  -     #activateOptions} is called, not when the options are set.
  -   */
  -  public
  -  void setAppend(boolean flag) {
  -    fileAppend = flag;
  -  }
  -  
  -
     /**
        If the value of <b>File</b> is not <code>null</code>, then {@link
        #setFile} is called with the values of <b>File</b>  and
  @@ -196,10 +149,10 @@
   
        @since 0.8.1 */
     public
  -  void activateOptions() {    
  +  void activateOptions() {
       if(fileName != null) {
         try {
  -     setFile(fileName, fileAppend);
  +     setFile(fileName, fileAppend, bufferedIO, bufferSize);
         }
         catch(java.io.IOException e) {
        errorHandler.error("setFile("+fileName+","+fileAppend+") call failed.",
  @@ -217,8 +170,7 @@
     */
     protected
     void closeFile() {
  -    // FIXME (remove qwIsOurs)
  -    if(this.qw != null && this.qwIsOurs) {
  +    if(this.qw != null) {
         try {
        this.qw.close();
         }
  @@ -231,6 +183,38 @@
     }
   
     /**
  +     The <b>Append</b> option takes a boolean value. It is set to
  +     <code>true</code> by default. If true, then <code>File</code>
  +     will be opened in append mode by {@link #setFile setFile} (see
  +     above). Otherwise, {@link #setFile setFile} will open
  +     <code>File</code> in truncate mode.
  +
  +     <p>Note: Actual opening of the file is made when {@link
  +     #activateOptions} is called, not when the options are set.
  +   */
  +  public
  +  void setAppend(boolean flag) {
  +    fileAppend = flag;
  +  }
  +  
  +  /**
  +     The <b>BufferedIO</b> option takes a boolean value. It is set to
  +     <code>false</code> by default. If true, then <code>File</code>
  +     will be opened and the resulting {@link java.io.Writer} wrapped
  +     around a {@link BufferedWriter}.
  +
  +     BufferedIO will significatnly increase performance on heavily
  +     loaded systems.
  +
  +  */
  +  public
  +  void setBufferedIO(boolean bufferedIO) {
  +    this.bufferedIO = bufferedIO;
  +  }
  +  
  +
  +
  +  /**
       <p>Sets and <i>opens</i> the file where the log output will
       go. The specified file must be writable. 
   
  @@ -242,9 +226,14 @@
           truncate fileName.  */
     public
     synchronized
  -  void setFile(String fileName, boolean append) 
  +  void setFile(String fileName, boolean append, boolean bufferedIO, int bufferSize) 
                                                               throws IOException {
       LogLog.debug("setFile called: "+fileName+", "+append);
  +    
  +    // It does not make sense to have immediate flush and bufferedIO.
  +    if(bufferedIO) {
  +      setImmediateFlush(false);
  +    }
   
       reset();    
       Writer fw = new FileWriter(fileName, append);
  @@ -252,10 +241,10 @@
         fw = new BufferedWriter(fw);
       }
       this.setQWForFiles(fw);
  -    //this.tp = new TracerPrintWriter(qw);
       this.fileName = fileName;
       this.fileAppend = append;
  -    this.qwIsOurs = true;
  +    this.bufferedIO = bufferedIO;
  +    this.bufferSize = bufferSize;
       writeHeader();
       LogLog.debug("setFile ended");
     }
  @@ -279,12 +268,7 @@
     void reset() {
       closeFile();
       this.fileName = null;
  -    if(qwIsOurs) {
  -      super.reset();    
  -    } else {
  -      this.qw = null;
  -      //this.tp = null;    
  -    }
  +    super.reset();    
     }  
   }
   
  
  
  
  1.14      +1 -1      jakarta-log4j/src/java/org/apache/log4j/Makefile
  
  Index: Makefile
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/Makefile,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- Makefile  2001/08/06 16:38:14     1.13
  +++ Makefile  2001/08/14 21:00:34     1.14
  @@ -3,7 +3,6 @@
   DEPTH   :=../../../../..
   JSOURCES:=HTMLLayout.java\
        DailyRollingFileAppender.java\
  -     CompositeRollingAppender.java\
        RollingFileAppender.java\
        PropertyConfigurator.java\
        PatternLayout.java\
  @@ -25,6 +24,7 @@
        WriterAppender.java\
        ConsoleAppender.java\
           MDC.java\
  +
   
   ifdef $(ISJDK1)
    JSOURCES:=$(JSOURCES) RollingFileAppenderBeanInfo.java
  
  
  
  1.15      +4 -3      jakarta-log4j/src/java/org/apache/log4j/RollingFileAppender.java
  
  Index: RollingFileAppender.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/RollingFileAppender.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- RollingFileAppender.java  2001/07/20 16:57:15     1.14
  +++ RollingFileAppender.java  2001/08/14 21:00:34     1.15
  @@ -147,7 +147,7 @@
       try {
         // This will also close the file. This is OK since multiple
         // close operations are safe.
  -      this.setFile(fileName, false);
  +      this.setFile(fileName, false, bufferedIO, bufferSize);
       }
       catch(IOException e) {
         LogLog.error("setFile("+fileName+", false) call failed.", e);
  @@ -156,8 +156,9 @@
   
     public
     synchronized
  -  void setFile(String fileName, boolean append) throws IOException {
  -    super.setFile(fileName, append);
  +  void setFile(String fileName, boolean append, boolean bufferedIO, int bufferSize) 
  +                                                                 throws IOException 
{
  +    super.setFile(fileName, append, this.bufferedIO, this.bufferSize);
       if(append) {
         File f = new File(fileName);
         ((CountingQuietWriter) qw).setCount(f.length());
  
  
  
  1.13      +1 -2      
jakarta-log4j/src/java/org/apache/log4j/helpers/PatternParser.java
  
  Index: PatternParser.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/helpers/PatternParser.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- PatternParser.java        2001/08/06 19:29:19     1.12
  +++ PatternParser.java        2001/08/14 21:00:34     1.13
  @@ -12,7 +12,6 @@
   import org.apache.log4j.helpers.AbsoluteTimeDateFormat;
   import org.apache.log4j.Layout;
   import org.apache.log4j.NDC;
  -import org.apache.log4j.MDC;
   import org.apache.log4j.spi.LoggingEvent;
   import org.apache.log4j.spi.LocationInfo;
   import org.apache.log4j.or.ObjectRenderer;
  @@ -456,7 +455,7 @@
   
       public
       String convert(LoggingEvent event) {
  -      Object val = MDC.get(key);
  +      Object val = event.getMDC(key);
         if(val == null) {
        return null;
         } else {
  
  
  
  1.18      +11 -20    jakarta-log4j/src/java/org/apache/log4j/spi/LoggingEvent.java
  
  Index: LoggingEvent.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/spi/LoggingEvent.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- LoggingEvent.java 2001/08/13 10:22:10     1.17
  +++ LoggingEvent.java 2001/08/14 21:00:34     1.18
  @@ -176,6 +176,13 @@
       return ndc; 
     }
   
  +
  +  /** 
  +      Retrung the the context corresponding to the <code>key</code>
  +      parameter. If there is a local MDC copy (probably from a remote
  +      machine, the search try it first, if that fails then search this
  +      thread's <code>MDC</code>.
  +   */
     public
     Object getMDC(String key) {
       Object r;
  @@ -189,32 +196,16 @@
       return MDC.get(key);
     }
   
  -  protected
  +  /**
  +     Obtain a copy of this thread's MDC prior to serialization or
  +     asynchronous logging.  */
  +  public
     void getMDCCopy() {
       if(mdcLookupRequired) {
         ndcLookupRequired = false;
         mdcCopy = MDC.getContext();
       }
     }
  -
  -  
  -
  -  //  if(mdcLookupRequired) {
  -  // mdcLookupRequired = false;
  -  // mdc = MDC.getContext();
  -  // if(mdc != null) 
  -  //   return mdc.get(key);
  -  //  }
  -  //
  -  //
  -  //  Object r = mdc.get(key); 
  -  //  if(r == null) {
  -  // return MDC.get(key);
  -  //  } else {
  -  // return r;
  -  //  }
  -  //}
  -
   
     public
     String getRenderedMessage() {
  
  
  
  1.8       +1 -2      jakarta-log4j/src/java/org/apache/log4j/test/confParsing
  
  Index: confParsing
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/test/confParsing,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- confParsing       2001/04/17 22:32:38     1.7
  +++ confParsing       2001/08/14 21:00:34     1.8
  @@ -182,9 +182,8 @@
     D_FLAG=""
     echo  "log4j.rootCategory= DEBUG , testAppender" > $LCF
     lecho "log4j.debug=false"
  -  lecho "log4j.appender.testAppender=org.apache.log4j.FileAppender"
  +  lecho "log4j.appender.testAppender=org.apache.log4j.ConsoleAppender"
     # Note the spaces
  -  lecho "log4j.appender.testAppender.File=System.out  "
     lecho "log4j.appender.testAppender.layout=org.apache.log4j.PatternLayout "
     lecho "log4j.appender.testAppender.layout.ConversionPattern=[%t] %p - %m%n"
     echo -n " ConfigurationParsing test $TEST - "
  
  
  

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

Reply via email to