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]