1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.pattern;
18
19 import org.apache.logging.log4j.core.LogEvent;
20
21
22
23
24
25 public class PatternFormatter {
26 private final LogEventPatternConverter converter;
27 private final FormattingInfo field;
28 private final boolean skipFormattingInfo;
29
30 public PatternFormatter(final LogEventPatternConverter converter, final FormattingInfo field) {
31 this.converter = converter;
32 this.field = field;
33 this.skipFormattingInfo = field == FormattingInfo.getDefault();
34 }
35
36 public void format(final LogEvent event, final StringBuilder buf) {
37 if (skipFormattingInfo) {
38 converter.format(event, buf);
39 } else {
40 formatWithInfo(event, buf);
41 }
42 }
43 private void formatWithInfo(final LogEvent event, final StringBuilder buf) {
44 final int startField = buf.length();
45 converter.format(event, buf);
46 field.format(startField, buf);
47 }
48
49 public LogEventPatternConverter getConverter() {
50 return converter;
51 }
52
53 public FormattingInfo getFormattingInfo() {
54 return field;
55 }
56
57
58
59
60
61
62
63
64
65
66 public boolean handlesThrowable() {
67 return converter.handlesThrowable();
68 }
69
70
71
72
73
74
75 @Override
76 public String toString() {
77 final StringBuilder sb = new StringBuilder();
78 sb.append(super.toString());
79 sb.append("[converter=");
80 sb.append(converter);
81 sb.append(", field=");
82 sb.append(field);
83 sb.append(']');
84 return sb.toString();
85 }
86 }