[AAI] OOM AAI resources logging structure enhancement
[oom.git] / kubernetes / aai / components / aai-resources / resources / config / logback.xml
1 {{/*
2 <!--
3
4     ============LICENSE_START=======================================================
5     org.onap.aai
6     ================================================================================
7     Copyright © 2017 AT&T Intellectual Property. All rights reserved.
8     Modifications Copyright © 2018 Amdocs, Bell Canada
9     ================================================================================
10     Licensed under the Apache License, Version 2.0 (the "License");
11     you may not use this file except in compliance with the License.
12     You may obtain a copy of the License at
13
14       http://www.apache.org/licenses/LICENSE-2.0
15
16     Unless required by applicable law or agreed to in writing, software
17     distributed under the License is distributed on an "AS IS" BASIS,
18     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19     See the License for the specific language governing permissions and
20     limitations under the License.
21     ============LICENSE_END=========================================================
22
23     ECOMP is a trademark and service mark of AT&T Intellectual Property.
24
25 -->
26 */}}
27 <configuration scan="true" scanPeriod="60 seconds" debug="false">
28   <statusListener class="ch.qos.logback.core.status.NopStatusListener" />
29
30   <property resource="application.properties" />
31
32   <property name="maxHistory" value='{{.Values.logback.maxHistory}}' />
33   <property name="totalSizeCap" value='{{.Values.logback.totalSizeCap}}' />
34   <property name="queueSize" value='{{.Values.logback.queueSize}}'/>
35
36   <property name="logToFileEnabled" value='{{.Values.logback.logToFileEnabled}}'/>
37
38   <property name="namespace" value="aai-resources"/>
39
40   <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />
41   <jmxConfigurator />
42   <property name="logDirectory" value="${AJSC_HOME}/logs" />
43   <!-- Old patterns
44   <property name="eelfLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%ecompServiceName|%X{partnerName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
45   <property name="eelfAuditLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%ecompServiceName|%X{partnerName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
46   <property name="eelfMetricLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%ecompServiceName|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{targetVirtualEntity}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
47   <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%ecompServiceName|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%ecompResponseCode|%ecompResponseDescription|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
48     <property name="eelfTransLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%ecompServiceName|%X{partnerName}|%ecompStatusCode|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{partnerName}:%m%n"/>
49     -->
50   <property name="p_tim" value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}"/>
51   <property name="p_lvl" value="%level"/>
52   <property name="p_log" value="%logger"/>
53   <property name="p_mdc" value="%replace(%replace(%replace(%mdc){'\t','\\\\t'}){'\n', '\\\\n'}){'\\|', '!'}"/>
54   <property name="p_msg" value="%replace(%replace(%msg){'\t', '\\\\t'}){'\n','\\\\n'}"/>
55   <property name="p_exc" value="%replace(%replace(%rootException){'\t', '\\\\t'}){'\n','\\\\n'}"/>
56   <property name="p_mak" value="%replace(%replace(%marker){'\t', '\\\\t'}){'\n','\\\\n'}"/>
57   <property name="p_thr" value="%thread"/>
58   <property name="pattern" 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"/>
59   <!-- Patterns from onap demo -->
60   <property name="errorPattern" value="%X{LogTimestamp}|%X{RequestID}|%thread|%replace(%X{ServiceName}){'\\|', '!'}|%X{PartnerName}|%X{TargetEntity}|%replace(%X{TargetServiceName}){'\\|', '!'}|%.-5level|%X{ErrorCode}|%X{ErrorDesc}|%msg%n" />
61   <property name="debugPattern" value="%X{LogTimestamp}|%X{RequestID}|%msg\t${p_mdc}\t${p_msg}\t${p_exc}\t${p_mak}\t|^%n" />
62   <property name="auditPattern" value="%X{EntryTimestamp}|%X{LogTimestamp}|%X{RequestID}|%X{ServiceInstanceID}|%thread||%replace(%X{ServiceName}){'\\|', '!'}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}||||${p_mak}|${p_mdc}|||%msg%n" />
63   <property name="metricPattern" value="%X{InvokeTimestamp}|%X{LogTimestamp}|%X{RequestID}|%X{ServiceInstanceID}|%thread||%replace(%X{ServiceName}){'\\|', '!'}|%X{PartnerName}|%X{TargetEntity}|%replace(%X{TargetServiceName}){'\\|', '!'}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}||||%X{TargetVirtualEntity}|${p_mak}|${p_mdc}|||%msg%n" />
64   <property name="transLogPattern" value="%X{LogTimestamp}|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{RequestID}|%X{ServiceInstanceID}|%-10t|%X{ServerFQDN}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%replace(%replace(%X{ResponseDesc}){'\\|', '!'}){'\r|\n', '^'}|%X{InstanceUUID}|%level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{clientIpAddress}||%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{PartnerName}:%m%n"/>
65   <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
66   <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
67   <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
68
69   <if condition='property("logToFileEnabled").contains("true")'>
70     <then>
71       <appender name="SANE" class="ch.qos.logback.core.rolling.RollingFileAppender">
72         <file>${logDirectory}/rest/sane.log</file>
73         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
74           <fileNamePattern>${logDirectory}/rest/sane.log.%d{yyyy-MM-dd}.zip</fileNamePattern>
75           <maxHistory>${maxHistory}</maxHistory>
76           <totalSizeCap>${totalSizeCap}</totalSizeCap>
77         </rollingPolicy>
78         <encoder>
79           <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n
80           </pattern>
81         </encoder>
82       </appender>
83
84       <appender name="asyncSANE" class="ch.qos.logback.classic.AsyncAppender">
85         <queueSize>${queueSize}</queueSize>
86         <includeCallerData>true</includeCallerData>
87         <appender-ref ref="SANE"/>
88       </appender>
89       <appender name="METRIC" class="ch.qos.logback.core.rolling.RollingFileAppender">
90         <file>${logDirectory}/rest/metrics.log</file>
91         <rollingPolicy
92                 class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
93           <fileNamePattern>${logDirectory}/rest/metrics.log.%d{yyyy-MM-dd}.zip</fileNamePattern>
94           <maxHistory>${maxHistory}</maxHistory>
95           <totalSizeCap>${totalSizeCap}</totalSizeCap>
96         </rollingPolicy>
97         <encoder>
98           <pattern>${metricPattern}</pattern>
99         </encoder>
100       </appender>
101
102       <appender name="asyncMETRIC" class="ch.qos.logback.classic.AsyncAppender">
103         <queueSize>${queueSize}</queueSize>
104         <includeCallerData>true</includeCallerData>
105         <appender-ref ref="METRIC"/>
106       </appender>
107
108       <appender name="DEBUG"
109                 class="ch.qos.logback.core.rolling.RollingFileAppender">
110         <filter class="ch.qos.logback.classic.filter.LevelFilter">
111           <level>DEBUG</level>
112           <onMatch>ACCEPT</onMatch>
113           <onMismatch>DENY</onMismatch>
114         </filter>
115         <file>${logDirectory}/rest/debug.log</file>
116         <rollingPolicy
117                 class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
118           <fileNamePattern>${logDirectory}/rest/debug.log.%d{yyyy-MM-dd}.zip</fileNamePattern>
119           <maxHistory>${maxHistory}</maxHistory>
120           <totalSizeCap>${totalSizeCap}</totalSizeCap>
121         </rollingPolicy>
122         <encoder>
123           <pattern>${debugPattern}</pattern>
124         </encoder>
125       </appender>
126
127       <appender name="asyncDEBUG" class="ch.qos.logback.classic.AsyncAppender">
128         <queueSize>${queueSize}</queueSize>
129         <appender-ref ref="DEBUG"/>
130         <includeCallerData>true</includeCallerData>
131       </appender>
132       <appender name="ERROR"
133                 class="ch.qos.logback.core.rolling.RollingFileAppender">
134         <file>${logDirectory}/rest/error.log</file>
135         <rollingPolicy
136                 class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
137           <fileNamePattern>${logDirectory}/rest/error.log.%d{yyyy-MM-dd}.zip</fileNamePattern>
138           <maxHistory>${maxHistory}</maxHistory>
139           <totalSizeCap>${totalSizeCap}</totalSizeCap>
140         </rollingPolicy>
141         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
142           <level>WARN</level>
143         </filter>
144         <encoder>
145           <pattern>${errorPattern}</pattern>
146         </encoder>
147       </appender>
148
149       <appender name="asyncERROR" class="ch.qos.logback.classic.AsyncAppender">
150         <queueSize>${queueSize}</queueSize>
151         <appender-ref ref="ERROR"/>
152       </appender>
153
154       <appender name="AUDIT"
155                 class="ch.qos.logback.core.rolling.RollingFileAppender">
156         <file>${logDirectory}/rest/audit.log</file>
157         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
158           <fileNamePattern>${logDirectory}/rest/audit.log.%d{yyyy-MM-dd}.zip
159           </fileNamePattern>
160           <maxHistory>${maxHistory}</maxHistory>
161           <totalSizeCap>${totalSizeCap}</totalSizeCap>
162         </rollingPolicy>
163         <encoder>
164           <pattern>${auditPattern}</pattern>
165         </encoder>
166       </appender>
167
168       <appender name="asyncAUDIT" class="ch.qos.logback.classic.AsyncAppender">
169         <queueSize>${queueSize}</queueSize>
170         <includeCallerData>true</includeCallerData>
171         <appender-ref ref="AUDIT"/>
172       </appender>
173
174       <appender name="translog"
175                 class="ch.qos.logback.core.rolling.RollingFileAppender">
176         <filter class="ch.qos.logback.classic.filter.LevelFilter">
177           <level>DEBUG</level>
178           <onMatch>ACCEPT</onMatch>
179           <onMismatch>DENY</onMismatch>
180         </filter>
181         <file>${logDirectory}/rest/translog.log</file>
182         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
183           <fileNamePattern>${logDirectory}/rest/translog.log.%d{yyyy-MM-dd}.zip
184           </fileNamePattern>
185           <maxHistory>${maxHistory}</maxHistory>
186           <totalSizeCap>${totalSizeCap}</totalSizeCap>
187         </rollingPolicy>
188         <encoder>
189           <pattern>${transLogPattern}</pattern>
190         </encoder>
191       </appender>
192
193       <appender name="asynctranslog" class="ch.qos.logback.classic.AsyncAppender">
194         <queueSize>${queueSize}</queueSize>
195         <includeCallerData>true</includeCallerData>
196         <appender-ref ref="translog"/>
197       </appender>
198
199       <appender name="dmaapAAIEventConsumer"
200                 class="ch.qos.logback.core.rolling.RollingFileAppender">
201         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
202           <level>WARN</level>
203         </filter>
204         <File>${logDirectory}/dmaapAAIEventConsumer/error.log</File>
205         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
206           <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/error.log.%d{yyyy-MM-dd}.zip
207           </fileNamePattern>
208           <maxHistory>${maxHistory}</maxHistory>
209           <totalSizeCap>${totalSizeCap}</totalSizeCap>
210         </rollingPolicy>
211         <encoder>
212           <pattern>${errorPattern}</pattern>
213         </encoder>
214
215       </appender>
216
217       <appender name="dmaapAAIEventConsumerDebug"
218                 class="ch.qos.logback.core.rolling.RollingFileAppender">
219         <filter class="ch.qos.logback.classic.filter.LevelFilter">
220           <level>DEBUG</level>
221           <onMatch>ACCEPT</onMatch>
222           <onMismatch>DENY</onMismatch>
223         </filter>
224         <File>${logDirectory}/dmaapAAIEventConsumer/debug.log</File>
225         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
226           <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/debug.log.%d{yyyy-MM-dd}.zip
227           </fileNamePattern>
228           <maxHistory>${maxHistory}</maxHistory>
229           <totalSizeCap>${totalSizeCap}</totalSizeCap>
230         </rollingPolicy>
231         <encoder>
232           <pattern>${debugPattern}</pattern>
233         </encoder>
234       </appender>
235       <appender name="dmaapAAIEventConsumerInfo"
236                 class="ch.qos.logback.core.rolling.RollingFileAppender">
237         <filter class="ch.qos.logback.classic.filter.LevelFilter">
238           <level>INFO</level>
239           <onMatch>ACCEPT</onMatch>
240           <onMismatch>DENY</onMismatch>
241         </filter>
242         <File>${logDirectory}/dmaapAAIEventConsumer/dmaap-transaction.log</File>
243         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
244           <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/dmaap-transaction.log.%d{yyyy-MM-dd}.zip
245           </fileNamePattern>
246           <maxHistory>${maxHistory}</maxHistory>
247           <totalSizeCap>${totalSizeCap}</totalSizeCap>
248         </rollingPolicy>
249         <encoder>
250           <pattern>${auditPattern}</pattern>
251         </encoder>
252       </appender>
253       <appender name="dmaapAAIEventConsumerMetric"
254                 class="ch.qos.logback.core.rolling.RollingFileAppender">
255         <filter class="ch.qos.logback.classic.filter.LevelFilter">
256           <level>INFO</level>
257           <onMatch>ACCEPT</onMatch>
258           <onMismatch>DENY</onMismatch>
259         </filter>
260         <File>${logDirectory}/dmaapAAIEventConsumer/metrics.log</File>
261         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
262           <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/metrics.log.%d{yyyy-MM-dd}.zip
263           </fileNamePattern>
264           <maxHistory>${maxHistory}</maxHistory>
265           <totalSizeCap>${totalSizeCap}</totalSizeCap>
266         </rollingPolicy>
267         <encoder>
268           <pattern>${metricPattern}</pattern>
269         </encoder>
270       </appender>
271       <appender name="external"
272                 class="ch.qos.logback.core.rolling.RollingFileAppender">
273         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
274           <level>WARN</level>
275         </filter>
276         <file>${logDirectory}/external/external.log</file>
277         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
278           <fileNamePattern>${logDirectory}/external/external.log.%d{yyyy-MM-dd}.zip
279           </fileNamePattern>
280           <maxHistory>${maxHistory}</maxHistory>
281           <totalSizeCap>${totalSizeCap}</totalSizeCap>
282         </rollingPolicy>
283         <encoder>
284           <pattern>${debugPattern}</pattern>
285         </encoder>
286       </appender>
287       <appender name="auth"
288                 class="ch.qos.logback.core.rolling.RollingFileAppender">
289         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
290           <level>DEBUG</level>
291         </filter>
292         <file>${logDirectory}/auth/auth.log</file>
293         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
294           <fileNamePattern>${logDirectory}/auth/auth.log.%d{yyyy-MM-dd}.zip
295           </fileNamePattern>
296           <maxHistory>${maxHistory}</maxHistory>
297           <totalSizeCap>${totalSizeCap}</totalSizeCap>
298         </rollingPolicy>
299         <encoder>
300           <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}[%thread] %-5level %logger{1024} - %msg%n</pattern>
301         </encoder>
302       </appender>
303       <appender name="asyncAUTH" class="ch.qos.logback.classic.AsyncAppender">
304         <queueSize>${queueSize}</queueSize>
305         <includeCallerData>true</includeCallerData>
306         <appender-ref ref="auth"/>
307       </appender>
308     </then>
309   </if>
310
311   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
312     <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
313       <providers>
314         <timestamp><fieldName>timestamp</fieldName></timestamp>
315         <message/>
316         <mdc>
317           <fieldName>context</fieldName>
318           <excludeMdcKeyName>ServerIPAddress</excludeMdcKeyName>
319           <excludeMdcKeyName>EntryTimestamp</excludeMdcKeyName>
320           <excludeMdcKeyName>InvokeTimestamp</excludeMdcKeyName>
321           <excludeMdcKeyName>ErrorCode</excludeMdcKeyName>
322           <excludeMdcKeyName>ErrorDesc</excludeMdcKeyName>
323         </mdc>
324         <stackTrace>
325           <fieldName>exception</fieldName>
326           <throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
327             <exclude>^sun\.reflect\..*\.invoke</exclude>
328             <exclude>^net\.sf\.cglib\.proxy\.MethodProxy\.invoke</exclude>
329             <rootCauseFirst>true</rootCauseFirst>
330           </throwableConverter>
331         </stackTrace>
332         <threadName><fieldName>thread</fieldName></threadName>
333         <loggerName>
334           <fieldName>logger</fieldName>
335           <shortenedLoggerNameLength>36</shortenedLoggerNameLength>
336         </loggerName>
337         <logLevel/>
338         <pattern>
339           <pattern>{"logType":"app"}</pattern>
340         </pattern>
341       </providers>
342     </encoder>
343   </appender>
344
345   <!-- logback internals logging -->
346
347   <logger name="ch.qos.logback.classic" level="WARN" />
348   <logger name="ch.qos.logback.core" level="WARN" />
349
350   <logger name="com.att.aft.dme2" level="WARN" />
351   <logger name="com.jayway.jsonpath" level="WARN" />
352
353   <logger name="org.apache" level="OFF" />
354   <logger name="org.apache.commons" level="WARN" />
355   <logger name="org.apache.zookeeper" level="OFF" />
356   <logger name="org.codehaus.groovy" level="WARN" />
357   <logger name="org.eclipse.jetty" level="WARN" />
358   <!-- Spring related loggers -->
359   <logger name="org.springframework" level="WARN" />
360   <logger name="org.springframework.beans" level="WARN" />
361   <logger name="org.springframework.web" level="WARN" />
362   <logger name="org.janusgraph" level="WARN" />
363   <logger name="org.zookeeper" level="OFF" />
364
365
366   <logger name="org.onap.aai" level="DEBUG" additivity="false">
367     <if condition='property("logToFileEnabled").contains("true")'>
368       <then>
369         <appender-ref ref="asyncDEBUG"/>
370         <appender-ref ref="asyncSANE"/>
371       </then>
372     </if>
373     <appender-ref ref="STDOUT"/>
374   </logger>
375   <logger name="org.onap.aai.aaf.auth" level="DEBUG" additivity="false">
376     <if condition='property("logToFileEnabled").contains("true")'>
377       <then>
378         <appender-ref ref="asyncAUTH"/>
379       </then>
380     </if>
381     <appender-ref ref="STDOUT"/>
382   </logger>
383
384   <if condition='property("logToFileEnabled").contains("true")'>
385     <then>
386       <!-- These loggers are not additive and will be redirected to the parent logger.
387         Sending events to log is handled by parent loggers-->
388       <logger name="org.onap.aai.aailog.logs.AaiScheduledTaskAuditLog" level="INFO">
389         <appender-ref ref="asyncAUDIT"/>
390       </logger>
391       <logger name="org.onap.logging.filter.base.AbstractAuditLogFilter" level="INFO">
392         <appender-ref ref="asyncAUDIT"/>
393       </logger>
394       <logger name="org.onap.aai.aailog.logs.AaiDBMetricLog" level="INFO">
395         <appender-ref ref="asyncMETRIC"/>
396       </logger>
397       <logger name="org.onap.aai.aailog.logs.AaiDmaapMetricLog" level="INFO">
398         <appender-ref ref="dmaapAAIEventConsumerMetric"/>
399       </logger>
400       <logger name="org.onap.aai.logging.ErrorLogHelper" level="WARN">
401         <appender-ref ref="asyncERROR"/>
402       </logger>
403       <logger name="com.att.nsa.mr" level="INFO">
404         <appender-ref ref="dmaapAAIEventConsumerInfo"/>
405       </logger>
406     </then>
407   </if>
408
409   <logger name="org.onap.aai.interceptors.post" level="DEBUG" additivity="false">
410     <if condition='property("logToFileEnabled").contains("true")'>
411       <then>
412         <appender-ref ref="asynctranslog"/>
413       </then>
414     </if>
415     <appender-ref ref="STDOUT"/>
416   </logger>
417
418   <logger name="org.onap.aai.dmaap" level="DEBUG" additivity="false">
419     <if condition='property("logToFileEnabled").contains("true")'>
420       <then>
421         <appender-ref ref="dmaapAAIEventConsumer"/>
422         <appender-ref ref="dmaapAAIEventConsumerDebug"/>
423       </then>
424     </if>
425     <appender-ref ref="STDOUT"/>
426   </logger>
427
428   <root level="DEBUG">
429     <if condition='property("logToFileEnabled").contains("true")'>
430       <then>
431         <appender-ref ref="external"/>
432       </then>
433     </if>
434     <appender-ref ref="STDOUT"/>
435   </root>
436 </configuration>