Templated logback configuration prototype
[logging-analytics.git] / reference / provider / helm / logback / chart / resources / logback.xml
1 <configuration scan='{{.Values.log.scan.enabled}}' scanPeriod='{{.Values.log.scan.seconds}} seconds' debug='{{.Values.log.debug}}'>
2
3     <!-- Component-specific settings. Will ALWAYS change. -->
4
5     <property name="componentName" value='{{default "UNSET_COMPONENT" .Values.log.componentName}}'/>
6     <property name="subcomponentName" value='{{default "UNSET_SUBCOMPONENT" .Values.log.subcomponentName}}'/>
7
8     <!-- Common settings. Will SOMETIMES change. -->
9
10     <property name="serverName" value='{{.Values.log.serverName}}'/>
11     <property name="logDir" value='{{.Values.log.logDir}}'/>
12     <property name="maxFileSize" value='{{.Values.log.maxFileSize}}'/>
13     <property name="maxHistory" value='{{.Values.log.maxHistory}}'/>
14     <property name="totalSizeCap" value='{{.Values.log.totalSizeCap}}'/>
15     <property name="queueSize" value='{{.Values.log.queueSize}}'/>
16
17     <!-- /////////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
18     <!-- /////////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
19     <!-- /////////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
20     <!-- /////////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
21
22     <property name="p_tim" value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}"/>
23     <property name="p_lvl" value="%level"/>
24     <property name="p_log" value="%logger"/>
25     <property name="p_mdc" value="%replace(%replace(%mdc){'\t','\\\\t'}){'\n', '\\\\n'}"/>
26     <property name="p_msg" value="%replace(%replace(%msg){'\t', '\\\\t'}){'\n','\\\\n'}"/>
27     <property name="p_exc" value="%replace(%replace(%rootException){'\t', '\\\\t'}){'\n','\\\\n'}"/>
28     <property name="p_mak" value="%replace(%replace(%marker){'\t', '\\\\t'}){'\n','\\\\n'}"/>
29     <property name="p_thr" value="%thread"/>
30
31     <!-- Appender-specific properties. -->
32
33     <!-- Console (human-readable) logging -->
34
35     <property
36             name="consolePattern"
37             value="%nopexception${p_log}\t${p_tim}\t${p_lvl}\t%message\t${p_mdc}\t%rootException\t${p_mak}\t${p_thr}%n"/>
38
39     <!-- Beats (indexable) output. -->
40
41     <property name="beatsPattern" value="%nopexception${p_tim}\t${p_thr}\t${p_lvl}\t${p_log}\t${p_mdc}\t${p_msg}\t${p_exc}\t${p_mak}\t%n"/>
42     <property name="beatsLogRoot" value="${logDir}/beats"/>
43     <property name="beatsLogDirectory" value="${beatsLogRoot}/${componentName}/${subcomponentName}"/>
44     <property name="beatsLogFilename" value="${serverName}"/>
45
46     <!-- EELF (legacy) output. -->
47
48     <property name="eelfAuditLogName" value="${serverName}-audit"/>
49     <property name="eelfMetricsLogName" value="${serverName}-metrics"/>
50     <property name="eelfDebugLogName" value="${serverName}-debug"/>
51     <property name="eelfErrorLogName" value="${serverName}-error"/>
52     <property name="eelfApplicationLogName" value="${serverName}-application"/>
53     <property
54             name="eelfAuditPattern"
55             value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}|%logger|||||||%msg%n"/>
56     <property
57             name="eelfMetricsPattern"
58             value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}|%logger|||%X{TargetVirtualEntity}|||||%msg%n"/>
59     <property
60             name="eelfErrorPattern"
61             value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%.-5level|%X{ErrorCode}|%X{ErrorDesc}|%msg%n"/>
62     <property
63             name="eelfDebugPattern"
64             value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX, UTC}|%X{RequestId}|%msg%n"/>
65     <property
66             name="eelfApplicationPattern"
67             value="${eelfErrorPattern}" />
68     <property name="eelfLogRoot" value="${logDir}/eelf"/>
69     <property name="eelfLogDirectory" value="${eelfLogRoot}/${componentName}/${subcomponentName}"/>
70
71     <!-- /////////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
72     <!-- /////////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
73     <!-- /////////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
74     <!-- /////////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
75
76     <!-- Console output. /////////////////////////////////////////// -->
77
78     <appender class="ch.qos.logback.core.ConsoleAppender" name="Console">
79         <encoder>
80             <pattern>${consolePattern}</pattern>
81         </encoder>
82     </appender>
83
84     <appender name="ConsoleAsync" class="ch.qos.logback.classic.AsyncAppender">
85         <queueSize>${queueSize}</queueSize>
86         <appender-ref ref="Console"/>
87     </appender>
88
89     <!-- Indexable output. /////////////////////////////////////////// -->
90
91     <appender name="Beats" class="ch.qos.logback.core.rolling.RollingFileAppender">
92         <file>${beatsLogDirectory}/${beatsLogFilename}.log</file>
93         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
94             <fileNamePattern>${beatsLogDirectory}/${beatsLogFilename}.%i.log.%d</fileNamePattern>
95             <maxFileSize>${maxFileSize}</maxFileSize>
96             <maxHistory>${maxHistory}</maxHistory>
97             <totalSizeCap>${totalSizeCap}</totalSizeCap>
98         </rollingPolicy>
99         <encoder>
100             <pattern>${beatsPattern}</pattern>
101         </encoder>
102     </appender>
103
104     <appender name="BeatsAsync" class="ch.qos.logback.classic.AsyncAppender">
105         <queueSize>${queueSize}</queueSize>
106         <appender-ref ref="Beats"/>
107     </appender>
108
109     <!-- Syslog output. -->
110
111     <appender name="Syslog" class="ch.qos.logback.classic.net.SyslogAppender">
112         <syslogHost>{{default "localhost" .Values.log.syslog.host}}</syslogHost>
113         <port>{{default "514" .Values.log.syslog.port}}</port>
114         <facility>{{default "USER" .Values.log.syslog.facility}}</facility>
115     </appender>
116
117     <appender name="SyslogAsync" class="ch.qos.logback.classic.AsyncAppender">
118         <queueSize>${queueSize}</queueSize>
119         <appender-ref ref="Syslog"/>
120     </appender>
121
122     <!-- EELF output. -->
123
124     <!-- Audit. -->
125
126     <appender name="EELFAudit" class="ch.qos.logback.core.rolling.RollingFileAppender">
127         <file>${eelfLogDirectory}/${eelfAuditLogName}.log</file>
128         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
129             <fileNamePattern>${eelfLogDirectory}/${eelfAuditLogName}.%i.log.%d</fileNamePattern>
130             <maxFileSize>${maxFileSize}</maxFileSize>
131             <maxHistory>${maxHistory}</maxHistory>
132             <totalSizeCap>${totalSizeCap}</totalSizeCap>
133         </rollingPolicy>
134         <encoder>
135             <pattern>${eelfAuditPattern}</pattern>
136         </encoder>
137     </appender>
138
139     <appender name="EELFAuditAsync" class="ch.qos.logback.classic.AsyncAppender">
140         <queueSize>${queueSize}</queueSize>
141         <appender-ref ref="EELFAudit"/>
142     </appender>
143
144     <!-- EELF metrics. -->
145
146     <appender name="EELFMetrics" class="ch.qos.logback.core.rolling.RollingFileAppender">
147         <file>${eelfLogDirectory}/${eelfMetricsLogName}.log</file>
148         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
149             <fileNamePattern>${eelfLogDirectory}/${eelfMetricsLogName}.%i.log.%d</fileNamePattern>
150             <maxFileSize>${maxFileSize}</maxFileSize>
151             <maxHistory>${maxHistory}</maxHistory>
152             <totalSizeCap>${totalSizeCap}</totalSizeCap>
153         </rollingPolicy>
154         <encoder>
155             <pattern>${eelfMetricsPattern}</pattern>
156         </encoder>
157     </appender>
158
159     <appender name="EELFMetricsAsync" class="ch.qos.logback.classic.AsyncAppender">
160         <queueSize>${queueSize}</queueSize>
161         <appender-ref ref="EELFMetrics"/>
162     </appender>
163
164     <!-- EELF debug -->
165
166     <appender name="EELFDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
167         <file>${eelfLogDirectory}/${eelfDebugLogName}.log</file>
168         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
169             <fileNamePattern>${eelfLogDirectory}/${eelfDebugLogName}.%i.log.%d</fileNamePattern>
170             <maxFileSize>${maxFileSize}</maxFileSize>
171             <maxHistory>${maxHistory}</maxHistory>
172             <totalSizeCap>${totalSizeCap}</totalSizeCap>
173         </rollingPolicy>
174         <encoder>
175             <pattern>${eelfDebugPattern}</pattern>
176         </encoder>
177     </appender>
178
179     <appender name="EELFDebugAsync" class="ch.qos.logback.classic.AsyncAppender">
180         <queueSize>${queueSize}</queueSize>
181         <appender-ref ref="EELFDebug"/>
182     </appender>
183
184     <!-- EELF error -->
185
186     <appender name="EELFError" class="ch.qos.logback.core.rolling.RollingFileAppender">
187         <file>${eelfLogDirectory}/${eelfErrorLogName}.log</file>
188         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
189             <fileNamePattern>${eelfLogDirectory}/${eelfErrorLogName}.%i.log.%d</fileNamePattern>
190             <maxFileSize>${maxFileSize}</maxFileSize>
191             <maxHistory>${maxHistory}</maxHistory>
192             <totalSizeCap>${totalSizeCap}</totalSizeCap>
193         </rollingPolicy>
194         <encoder>
195             <pattern>${eelfErrorPattern}</pattern>
196         </encoder>
197     </appender>
198
199     <appender name="EELFErrorAsync" class="ch.qos.logback.classic.AsyncAppender">
200         <queueSize>${queueSize}</queueSize>
201         <appender-ref ref="EELFError"/>
202     </appender>
203
204     <!-- EELF general -->
205
206     <appender name="EELF" class="ch.qos.logback.core.rolling.RollingFileAppender">
207         <file>${eelfLogDirectory}/${eelfApplicationLogName}.log</file>
208         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
209             <fileNamePattern>${eelfLogDirectory}/${eelfApplicationLogName}.%i.log.%d</fileNamePattern>
210             <maxFileSize>${maxFileSize}</maxFileSize>
211             <maxHistory>${maxHistory}</maxHistory>
212             <totalSizeCap>${totalSizeCap}</totalSizeCap>
213         </rollingPolicy>
214         <encoder>
215             <pattern>${eelfApplicationPattern}</pattern>
216         </encoder>
217     </appender>
218
219     <appender name="EELFAsync" class="ch.qos.logback.classic.AsyncAppender">
220         <queueSize>${queueSize}</queueSize>
221         <appender-ref ref="EELF"/>
222     </appender>
223
224     <!-- ///////////////////////////////////////////////////////////////////// -->
225     <!-- ///////////////////////////////////////////////////////////////////// -->
226     <!-- ///////////////////////////////////////////////////////////////////// -->
227     <!-- ///////////////////////////////////////////////////////////////////// -->
228
229     <!-- EELF loggers. -->
230
231     {{if .Values.log.root.eelf}}
232     <logger name="com.att.eelf.audit" level="info" additivity="false">
233         <appender-ref ref="EELFAuditAsync"/>
234     </logger>
235
236     <logger name="com.att.eelf.metrics" level="info" additivity="false">
237         <appender-ref ref="EELFMetricsAsync"/>
238     </logger>
239
240     <logger name="com.att.eelf.debug" level="debug" additivity="false">
241         <appender-ref ref="EELFDebugAsync"/>
242     </logger>
243
244     <logger name="com.att.eelf.error" level="error" additivity="false">
245         <appender-ref ref="EELFErrorAsync"/>
246     </logger>
247     {{ end }}
248
249     <!-- Root logger. -->
250
251     <root level='{{.Values.log.root.level}}'>
252         {{ if .Values.log.root.beats }}
253         <appender-ref ref="BeatsAsync"/>
254         {{ end }}
255         {{ if .Values.log.root.console }}
256         <appender-ref ref="ConsoleAsync"/>
257         {{ end }}
258         {{ if .Values.log.root.eelf }}
259         <appender-ref ref="EELFAsync"/>
260         {{ end }}
261     </root>
262
263     <!-- Named loggers. -->
264
265     {{- range .Values.log.loggers }}
266     <logger name='{{.name}}' level='{{.level}}' additivity="false">
267         {{ if .beats }}
268         <appender-ref ref="BeatsAsync"/>
269         {{ end }}
270         {{ if .console }}
271         <appender-ref ref="ConsoleAsync"/>
272         {{ end }}
273         {{ if .syslog }}
274         <appender-ref ref="SyslogAsync"/>
275         {{ end }}
276         {{ if .eelf }}
277         <appender-ref ref="EELFAsync"/>
278         {{ end }}
279     </logger>
280     {{- end}}
281
282 </configuration>