1
2
3
4
5
6
7
8
9
10
11 package psiprobe.tools.logging.logback;
12
13 import ch.qos.logback.core.OutputStreamAppender;
14 import ch.qos.logback.core.encoder.Encoder;
15 import ch.qos.logback.core.encoder.LayoutWrappingEncoder;
16
17 import java.io.File;
18 import java.nio.file.Path;
19
20 import psiprobe.tools.logging.AbstractLogDestination;
21
22
23
24
25 public class LogbackAppenderAccessor extends AbstractLogDestination {
26
27
28 private LogbackLoggerAccessor loggerAccessor;
29
30
31
32
33
34
35 public LogbackLoggerAccessor getLoggerAccessor() {
36 return loggerAccessor;
37 }
38
39
40
41
42
43
44 public void setLoggerAccessor(LogbackLoggerAccessor loggerAccessor) {
45 this.loggerAccessor = loggerAccessor;
46 }
47
48 @Override
49 public boolean isContext() {
50 return getLoggerAccessor().isContext();
51 }
52
53 @Override
54 public boolean isRoot() {
55 return getLoggerAccessor().isRoot();
56 }
57
58 @Override
59 public String getName() {
60 return getLoggerAccessor().getName();
61 }
62
63
64
65
66
67
68
69 @Override
70 public String getLogType() {
71 return "logback";
72 }
73
74
75
76
77
78
79 @Override
80 public String getIndex() {
81 return (String) getProperty(getTarget(), "name", null);
82 }
83
84
85
86
87
88
89
90
91
92
93
94 @Override
95 public File getFile() {
96 String fileName = (String) getProperty(getTarget(), "file", null);
97 return fileName != null ? Path.of(fileName).toFile() : getStdoutFile();
98 }
99
100 @Override
101 public String getEncoding() {
102 if (getTarget() instanceof OutputStreamAppender) {
103 OutputStreamAppender<?> appender = (OutputStreamAppender<?>) getTarget();
104 Encoder<?> encoder = appender.getEncoder();
105 if (encoder instanceof LayoutWrappingEncoder) {
106 LayoutWrappingEncoder<?> base = (LayoutWrappingEncoder<?>) encoder;
107 if (base.getCharset() != null) {
108 return base.getCharset().name();
109 }
110 }
111 }
112 return null;
113 }
114
115
116
117
118
119
120 @Override
121 public String getLevel() {
122 return getLoggerAccessor().getLevel();
123 }
124
125
126
127
128
129
130
131
132
133 @Override
134 public String[] getValidLevels() {
135 return new String[] {"OFF", "ERROR", "WARN", "INFO", "DEBUG", "TRACE", "ALL"};
136 }
137
138 }