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]

Reply via email to