ceki 2004/12/23 12:37:45
Modified: src/java/org/apache/log4j/pattern DatePatternConverter.java
Log:
Added a small cache lasting 1 millisecond
Revision Changes Path
1.13 +24 -13
logging-log4j/src/java/org/apache/log4j/pattern/DatePatternConverter.java
Index: DatePatternConverter.java
===================================================================
RCS file:
/home/cvs/logging-log4j/src/java/org/apache/log4j/pattern/DatePatternConverter.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- DatePatternConverter.java 23 Dec 2004 18:10:09 -0000 1.12
+++ DatePatternConverter.java 23 Dec 2004 20:37:45 -0000 1.13
@@ -42,7 +42,9 @@
private DateFormat cdf;
private Date date;
protected FieldPosition pos = new FieldPosition(0);
-
+ long lastTimestamp = 0;
+ boolean alreadyWarned = false;
+
// public DatePatternConverter(FormattingInfo formattingInfo) {
// super(formattingInfo);
// this.buf = new StringBuffer(32);
@@ -103,19 +105,28 @@
}
public StringBuffer convert(LoggingEvent event) {
- buf.setLength(0);
-
- date.setTime(event.getTimeStamp());
-
- String converted = null;
-
- try {
- cdf.format(date, buf, pos);
- } catch (Exception ex) {
- logger.error("Error occured while converting date.", ex);
+ long timestamp = event.getTimeStamp();
+ // if called multiple times within the same milliseconds
+ // return old value
+ if(timestamp == lastTimestamp) {
+ return buf;
+ } else {
+ buf.setLength(0);
+ lastTimestamp = timestamp;
+ date.setTime(timestamp);
+ try {
+ cdf.format(date, buf, pos);
+ lastTimestamp = timestamp;
+ } catch (Exception ex) {
+ // this should never happen
+ buf.append("DATE_CONV_ERROR");
+ if(!alreadyWarned) {
+ alreadyWarned = true;
+ logger.error("Exception while converting date", ex);
+ }
+ }
+ return buf;
}
-
- return buf;
}
public String getName() {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]