1 /**
2 * Logback: the reliable, generic, fast and flexible logging framework.
3 * Copyright (C) 1999-2015, QOS.ch. All rights reserved.
4 *
5 * This program and the accompanying materials are dual-licensed under
6 * either the terms of the Eclipse Public License v1.0 as published by
7 * the Eclipse Foundation
8 *
9 * or (per the licensee's choosing)
10 *
11 * under the terms of the GNU Lesser General Public License version 2.1
12 * as published by the Free Software Foundation.
13 */
14 package ch.qos.logback.classic.pattern;
15
16 import ch.qos.logback.classic.spi.ILoggingEvent;
17
18 public abstract class NamedConverter extends ClassicConverter {
19
20 Abbreviator abbreviator = null;
21
22 /**
23 * Gets fully qualified name from event.
24 *
25 * @param event
26 * The LoggingEvent to process, cannot not be null.
27 * @return name, must not be null.
28 */
29 protected abstract String getFullyQualifiedName(final ILoggingEvent event);
30
31 public void start() {
32 String optStr = getFirstOption();
33 if (optStr != null) {
34 try {
35 int targetLen = Integer.parseInt(optStr);
36 if (targetLen == 0) {
37 abbreviator = new ClassNameOnlyAbbreviator();
38 } else if (targetLen > 0) {
39 abbreviator = new TargetLengthBasedClassNameAbbreviator(targetLen);
40 }
41 } catch (NumberFormatException nfe) {
42 // FIXME: better error reporting
43 }
44 }
45 }
46
47 public String convert(ILoggingEvent event) {
48 String fqn = getFullyQualifiedName(event);
49
50 if (abbreviator == null) {
51 return fqn;
52 } else {
53 return abbreviator.abbreviate(fqn);
54 }
55 }
56 }
57