1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package org.apache.hc.client5.http.impl.async;
29
30 import java.io.IOException;
31
32 import org.slf4j.Logger;
33
34 final class LogAppendable implements Appendable {
35
36 private final Logger log;
37 private final String prefix;
38 private final StringBuilder buffer;
39
40 public LogAppendable(final Logger log, final String prefix) {
41 this.log = log;
42 this.prefix = prefix;
43 this.buffer = new StringBuilder();
44 }
45
46
47 @Override
48 public Appendable append(final CharSequence text) throws IOException {
49 return append(text, 0, text.length());
50 }
51
52 @Override
53 public Appendable append(final CharSequence text, final int start, final int end) throws IOException {
54 for (int i = start; i < end; i++) {
55 append(text.charAt(i));
56 }
57 return this;
58 }
59
60 @Override
61 public Appendable append(final char ch) throws IOException {
62 if (ch == '\n') {
63 log.debug("{} {}", prefix, buffer);
64 buffer.setLength(0);
65 } else if (ch != '\r') {
66 buffer.append(ch);
67 }
68 return this;
69 }
70
71 public void flush() {
72 if (buffer.length() > 0) {
73 log.debug("{} {}", prefix, buffer);
74 buffer.setLength(0);
75 }
76 }
77
78 }