View Javadoc

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.pattern;
19  
20  import org.apache.log4j.spi.LocationInfo;
21  import org.apache.log4j.spi.LoggingEvent;
22  
23  
24  /**
25   * Formats the class name of the site of the logging request.
26   *
27   * @author Ceki Gülcü
28   */
29  public final class ClassNamePatternConverter extends NamePatternConverter {
30    /**
31     * Private constructor.
32     * @param options options, may be null.
33     */
34    private ClassNamePatternConverter(
35      final String[] options) {
36      super("Class Name", "class name", options);
37    }
38  
39    /**
40     * Gets an instance of ClassNamePatternConverter.
41     * @param options options, may be null.
42     * @return instance of pattern converter.
43     */
44    public static ClassNamePatternConverter newInstance(
45      final String[] options) {
46      return new ClassNamePatternConverter(options);
47    }
48  
49    /**
50     * Format a logging event.
51      * @param event event to format.
52     * @param toAppendTo string buffer to which class name will be appended.
53     */
54    public void format(final LoggingEvent event, final StringBuffer toAppendTo) {
55      final int initialLength = toAppendTo.length();
56      LocationInfo li = event.getLocationInformation();
57  
58      if (li == null) {
59        toAppendTo.append(LocationInfo.NA);
60      } else {
61        toAppendTo.append(li.getClassName());
62      }
63  
64      abbreviate(initialLength, toAppendTo);
65    }
66  }