1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    * 
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   * 
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.log4j;
19  import org.apache.log4j.helpers.PatternParser;
20  
21  /**
22  
23    Example showing how to extend PatternLayout to recognize additional
24    conversion characters.  
25    
26    <p>In this case MyPatternLayout recognizes %# conversion pattern. It
27    outputs the value of an internal counter which is also incremented
28    at each call.
29  
30    <p>See <a href=doc-files/MyPatternLayout.java><b>source</b></a> code
31    for more details.
32  
33    @see MyPatternParser
34    @see org.apache.log4j.PatternLayout
35    @author Anders Kristensen 
36  */
37  public class MyPatternLayout extends PatternLayout {
38    public
39    MyPatternLayout() {
40      this(DEFAULT_CONVERSION_PATTERN);
41    }
42  
43    public
44    MyPatternLayout(String pattern) {
45      super(pattern);
46    }
47      
48    public
49    PatternParser createPatternParser(String pattern) {
50      return new MyPatternParser(
51        pattern == null ? DEFAULT_CONVERSION_PATTERN : pattern);
52    }
53    
54    public
55    static void main(String[] args) {
56      Layout layout = new MyPatternLayout("[counter=%.10#] - %m%n");
57      Logger logger = Logger.getLogger("some.cat");
58      logger.addAppender(new ConsoleAppender(layout, ConsoleAppender.SYSTEM_OUT));
59      logger.debug("Hello, log");
60      logger.info("Hello again...");    
61    }
62  }