ceki        2004/12/08 13:21:33

  Modified:    src/java/org/apache/log4j/rolling
                        FixedWindowRollingPolicy.java
                        TimeBasedRollingPolicy.java
  Added:       src/java/org/apache/log4j/rolling RollingPolicyBase.java
  Removed:     src/java/org/apache/log4j/rolling RollingPolicySkeleton.java
  Log:
  Various bug fixes.
  
  Revision  Changes    Path
  1.2       +1 -1      
logging-log4j/src/java/org/apache/log4j/rolling/FixedWindowRollingPolicy.java
  
  Index: FixedWindowRollingPolicy.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/rolling/FixedWindowRollingPolicy.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- FixedWindowRollingPolicy.java     8 Dec 2004 15:33:23 -0000       1.1
  +++ FixedWindowRollingPolicy.java     8 Dec 2004 21:21:32 -0000       1.2
  @@ -56,7 +56,7 @@
    * @author Ceki Gülcü
    * @since 1.3
    * */
  -public class FixedWindowRollingPolicy extends RollingPolicySkeleton {
  +public class FixedWindowRollingPolicy extends RollingPolicyBase {
     int maxIndex;
     int minIndex;
     
  
  
  
  1.15      +24 -4     
logging-log4j/src/java/org/apache/log4j/rolling/TimeBasedRollingPolicy.java
  
  Index: TimeBasedRollingPolicy.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/rolling/TimeBasedRollingPolicy.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- TimeBasedRollingPolicy.java       24 Nov 2004 17:17:54 -0000      1.14
  +++ TimeBasedRollingPolicy.java       8 Dec 2004 21:21:32 -0000       1.15
  @@ -18,6 +18,7 @@
   
   import org.apache.log4j.rolling.helper.Compress;
   import org.apache.log4j.rolling.helper.DateTokenConverter;
  +import org.apache.log4j.rolling.helper.FileNamePattern;
   import org.apache.log4j.rolling.helper.RollingCalendar;
   import org.apache.log4j.rolling.helper.Util;
   
  @@ -133,7 +134,7 @@
    * @author Ceki Gülcü
    * @since 1.3
    */
  -public class TimeBasedRollingPolicy extends RollingPolicySkeleton
  +public class TimeBasedRollingPolicy extends RollingPolicyBase
     implements TriggeringPolicy {
     static final String FNP_NOT_SET =
       "The FileNamePattern option must be set before using 
TimeBasedRollingPolicy. ";
  @@ -143,10 +144,12 @@
     long nextCheck;
     Date lastCheck = new Date();
     String elapsedPeriodsFileName;
  -
  +  FileNamePattern activeFileNamePattern;
  +  
     public void activateOptions() {
       // find out period from the filename pattern
       if (fileNamePatternStr != null) {
  +      fileNamePattern = new FileNamePattern(fileNamePatternStr);
         determineCompressionMode();
       } else {
         getLogger().warn(FNP_NOT_SET);
  @@ -162,6 +165,23 @@
           + "] does not contain a valid DateToken");
       }
   
  +    int len = fileNamePatternStr.length();
  +    switch(compressionMode) {
  +    case Compress.GZ:
  +      activeFileNamePattern =
  +        new FileNamePattern(fileNamePatternStr.substring(0, len - 3));
  +      break;
  +      case Compress.ZIP:
  +        activeFileNamePattern =
  +          new FileNamePattern(fileNamePatternStr.substring(0, len - 4));
  +        break;
  +       case Compress.NONE:
  +        activeFileNamePattern = fileNamePattern;
  +     }
  +     getLogger().info("Will use the pattern {} for the active file", 
activeFileNamePattern);
  +    
  +    
  +   
       rc = new RollingCalendar();
       rc.init(dtc.getDatePattern());
       getLogger().debug(
  @@ -224,7 +244,7 @@
     public String getActiveFileName() {
       getLogger().debug("getActiveLogFileName called");
       if (activeFileName == null) {
  -      return fileNamePattern.convert(lastCheck);
  +      return activeFileNamePattern.convert(lastCheck);
       } else {
         return activeFileName;
       }
  @@ -240,7 +260,7 @@
         // We set the elapsedPeriodsFileName before we set the 'lastCheck' 
variable
         // The elapsedPeriodsFileName corresponds to the file name of the 
period
         // that just elapsed.
  -      elapsedPeriodsFileName = fileNamePattern.convert(lastCheck);
  +      elapsedPeriodsFileName = activeFileNamePattern.convert(lastCheck);
         getLogger().debug(
           "elapsedPeriodsFileName set to {}", elapsedPeriodsFileName);
   
  
  
  
  1.1                  
logging-log4j/src/java/org/apache/log4j/rolling/RollingPolicyBase.java
  
  Index: RollingPolicyBase.java
  ===================================================================
  /*
   * 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.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  package org.apache.log4j.rolling;
  
  import org.apache.log4j.LogManager;
  import org.apache.log4j.Logger;
  import org.apache.log4j.rolling.helper.Compress;
  import org.apache.log4j.rolling.helper.FileNamePattern;
  
  
  /**
   * Implements methods common to most, it not all, rolling
   * policies. Currently such methods are limited to a compression mode
   * getter/setter.
   *
   * @author Ceki Gülcü
   * @since 1.3
   */
  public abstract class RollingPolicyBase implements RollingPolicy {
    protected int compressionMode = Compress.NONE;
    protected FileNamePattern fileNamePattern;
    protected String fileNamePatternStr;
    protected String activeFileName;
    private Logger logger;
  
    /*
     * @see org.apache.log4j.spi.OptionHandler#activateOptions()
     */
    public abstract void activateOptions();
  
    /**
     * Given the FileNamePattern string, this method determines the compression
     * mode depending on last letters of the fileNamePatternStr. Patterns
     * ending with .gz imply GZIP compression, endings with '.zip' imply
     * ZIP compression. Otherwise and by default, there is no compression.
     *
     */
    protected void determineCompressionMode() {
       if (fileNamePatternStr.endsWith(".gz")) {
        getLogger().debug("Will use gz compression");
        compressionMode = Compress.GZ;
      } else if (fileNamePatternStr.endsWith(".zip")) {
        getLogger().debug("Will use zip compression");
        compressionMode = Compress.ZIP;
      } else {
        getLogger().debug("No compression will be used");
        compressionMode = Compress.NONE;
      }
    }
  
    public void setFileNamePattern(String fnp) {
      fileNamePatternStr = fnp;
    }
  
    public String getFileNamePattern() {
      return fileNamePatternStr;
    }
  
    /**
     * ActiveFileName can be left unset, i.e. as null.
     * @see #getActiveFileName
     */
    public void setActiveFileName(String afn) {
      activeFileName = afn;
    }
  
    /**
     * Return an instance specific logger to be used by the policy itself.
     *
     * @return instance specific logger
     */
    protected Logger getLogger() {
      if (logger == null) {
        logger = LogManager.getLogger(this.getClass().getName());
      }
      return logger;
    }
  }
  
  
  

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

Reply via email to