You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by ca...@apache.org on 2004/12/22 21:31:11 UTC

cvs commit: logging-log4j/tests/src/java/org/apache/log4j/pattern PatternParserTest.java

carnold     2004/12/22 12:31:11

  Modified:    src/java/org/apache/log4j/pattern DatePatternConverter.java
                        PatternConverter.java PatternParser.java
               tests/src/java/org/apache/log4j/pattern
                        PatternParserTest.java
  Log:
  BUG 32064: TimeZone support in PatternLayout
  
  Revision  Changes    Path
  1.9       +18 -0     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.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- DatePatternConverter.java	7 Dec 2004 09:34:59 -0000	1.8
  +++ DatePatternConverter.java	22 Dec 2004 20:31:11 -0000	1.9
  @@ -25,6 +25,8 @@
   import java.text.SimpleDateFormat;
   
   import java.util.Date;
  +import java.util.TimeZone;
  +import java.util.List;
   
   
   /**
  @@ -86,6 +88,22 @@
       }
     }
   
  +  /**
  +   * Sets the date format and timezone.
  +   * @param options list of options, may be null.
  +   */
  +  public void setOptions(List options) {
  +     if (options == null || options.size() == 0) {
  +         setOption(null);
  +     } else {
  +         setOption((String) options.get(0));
  +         if (options.size() > 1) {
  +             TimeZone tz = TimeZone.getTimeZone((String) options.get(1));
  +             df.setTimeZone(tz);
  +         }
  +    }
  +  }
  +  
     public StringBuffer convert(LoggingEvent event) {
       buf.setLength(0);
   
  
  
  
  1.14      +13 -0     logging-log4j/src/java/org/apache/log4j/pattern/PatternConverter.java
  
  Index: PatternConverter.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/pattern/PatternConverter.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- PatternConverter.java	17 Dec 2004 19:58:15 -0000	1.13
  +++ PatternConverter.java	22 Dec 2004 20:31:11 -0000	1.14
  @@ -20,6 +20,7 @@
   
   import java.io.IOException;
   import java.io.Writer;
  +import java.util.List;
   
   
   /**
  @@ -127,6 +128,18 @@
   
     public void setOption(String string) {
       option = string;
  +  }
  +  
  +  /**
  +   *    Sets multiple options for the converter.
  +   *    @param options list of options, may be null.
  +   *    @remarks added to allow DateFormat to have multiple
  +   *       options, delegates to setOption for other converters. 
  +   */
  +  public void setOptions(List options) {
  +      if(options != null && options.size() >= 1) {
  +          setOption((String) options.get(0));
  +      }
     }
     
     /**
  
  
  
  1.18      +13 -7     logging-log4j/src/java/org/apache/log4j/pattern/PatternParser.java
  
  Index: PatternParser.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/pattern/PatternParser.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- PatternParser.java	14 Dec 2004 20:27:12 -0000	1.17
  +++ PatternParser.java	22 Dec 2004 20:31:11 -0000	1.18
  @@ -21,6 +21,8 @@
   
   import java.util.HashMap;
   import java.util.Map;
  +import java.util.List;
  +import java.util.ArrayList;
   
   
   // Contributors:   Nelson Minar <(n...@monkey.org>
  @@ -174,19 +176,23 @@
     /**
      * Returns the option, null if not in the expected format.
      */
  -  protected String extractOption() {
  -    if ((i < patternLength) && (pattern.charAt(i) == '{')) {
  +  private String extractOption() { return null; }
  +  protected List extractOptions() {
  +    ArrayList options = null;
  +    while ((i < patternLength) && (pattern.charAt(i) == '{')) {
         int end = pattern.indexOf('}', i);
   
         if (end > i) {
  +        if (options == null) {
  +            options = new ArrayList();
  +        }
           String r = pattern.substring(i + 1, end);
  +        options.add(r);
           i = end + 1;
  -
  -        return r;
         }
       }
   
  -    return null;
  +    return options;
     }
   
     public PatternConverter parse() {
  @@ -350,7 +356,7 @@
   
       //System.out.println("converter class [" + className + "]");
       
  -    String option = extractOption();
  +    List options = extractOptions();
   
       //System.out.println("Option is [" + option + "]");
       if (className != null) {
  @@ -361,7 +367,7 @@
         // formattingInfo variable is an instance variable, occasionally reset 
         // and used over and over again
         pc.setFormattingInfo(formattingInfo);
  -      pc.setOption(option);
  +      pc.setOptions(options);
         currentLiteral.setLength(0);
       } else {
         logger.error(
  
  
  
  1.6       +22 -0     logging-log4j/tests/src/java/org/apache/log4j/pattern/PatternParserTest.java
  
  Index: PatternParserTest.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/tests/src/java/org/apache/log4j/pattern/PatternParserTest.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- PatternParserTest.java	12 May 2004 15:39:02 -0000	1.5
  +++ PatternParserTest.java	22 Dec 2004 20:31:11 -0000	1.6
  @@ -22,6 +22,9 @@
   import org.apache.log4j.Level;
   import org.apache.log4j.Logger;
   import org.apache.log4j.spi.LoggingEvent;
  +import java.util.Date;
  +import java.text.SimpleDateFormat;
  +import java.util.TimeZone;
   
   import java.io.CharArrayWriter;
   
  @@ -139,6 +142,25 @@
       System.out.println("Result is[" + result + "]");
       assertEquals(expectedRelativeTime + " INFO  [main] "+logger.getName()+" - msg 1" + Layout.LINE_SEP, result);
     }
  +
  +  public void testMultiOption() throws Exception {
  +    PatternParser patternParser =
  +      new PatternParser("%d{HH:mm:ss}{GMT} %d{HH:mm:ss} %c  - %m%n");
  +    PatternConverter head = patternParser.parse();
  +
  +    String result = convert(event, head);
  +    System.out.println("Result is[" + result + "]");
  +    SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
  +    String localTime = dateFormat.format(new Date(event.getTimeStamp()));
  +    dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
  +    String utcTime = dateFormat.format(new Date(event.getTimeStamp()));
  +    StringBuffer buf = new StringBuffer(utcTime);
  +    buf.append(' ');
  +    buf.append(localTime);
  +    buf.append(" org.foobar  - msg 1\n");
  +    assertEquals(buf.toString(), result);
  +  }
  +
   
   //  public static Test suite() {
   //    TestSuite suite = new TestSuite();
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org