AAI traversal logging structure enhancement 98/132098/1
authorleila <leila.nishimwe@bell.ca>
Wed, 9 Nov 2022 14:47:42 +0000 (09:47 -0500)
committerleila <leila.nishimwe@bell.ca>
Wed, 9 Nov 2022 14:48:08 +0000 (09:48 -0500)
logging structure enhancement for logback and localhost xml files

Issue-ID: AAI-3584
Signed-off-by: leila <leila.nishimwe@bell.ca>
Change-Id: Iff2ff3f3faefb935780ead2d6c1b1f98f406f486

aai-traversal/pom.xml
aai-traversal/src/main/resources/localhost-access-logback.xml
aai-traversal/src/main/resources/logback.xml

index e09410e..d55f0fb 100644 (file)
                        <groupId>ch.qos.logback</groupId>
                        <artifactId>logback-access</artifactId>
                </dependency>
+               <dependency>
+                       <groupId>net.logstash.logback</groupId>
+                       <artifactId>logstash-logback-encoder</artifactId>
+                       <version>6.6</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.codehaus.janino</groupId>
+                       <artifactId>janino</artifactId>
+               </dependency>
                <dependency>
                        <groupId>org.hamcrest</groupId>
                        <artifactId>hamcrest-junit</artifactId>
index a318796..cb0b9a6 100644 (file)
 -->
 <configuration>
        <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />
+       <property name="maxHistory" value='7' />
+       <property name="totalSizeCap" value='1GB' />
        <appender name="ACCESS"
                class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <fileNamePattern>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log.%d{yyyy-MM-dd}
                        </fileNamePattern>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <encoder class="org.onap.aai.logging.CustomLogPatternLayoutEncoder">
                        <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId} %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU} %i{X-AAI-SSL-Client-O} %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST} %i{X-AAI-SSL-Client-C} %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter} %i{X-AAI-SSL-Client-DN} %D</Pattern>
                </encoder>
        </appender>
        <appender-ref ref="ACCESS" />
+
+       <appender name="STDOUTACCESS" class="ch.qos.logback.core.ConsoleAppender">
+               <encoder class="org.onap.aai.logging.CustomLogPatternLayoutEncoder">
+                       <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId} %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU} %i{X-AAI-SSL-Client-O} %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST} %i{X-AAI-SSL-Client-C} %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter} %i{X-AAI-SSL-Client-DN} %D - "logType": "access"</Pattern>
+               </encoder>
+       </appender>
+       <appender-ref ref="STDOUTACCESS" />
 </configuration>
 
 <!-- 
index 877876e..9c0cf90 100644 (file)
@@ -25,7 +25,9 @@
        <statusListener class="ch.qos.logback.core.status.NopStatusListener" />
 
        <property resource="application.properties" />
-
+       <property name="maxHistory" value='7' />
+       <property name="totalSizeCap" value='1GB' />
+       <property name="queueSize" value='1000'/>
        <property name="namespace" value="aai-traversal"/>
 
        <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />
        <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
        <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
        <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
+
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-               <encoder>
-                       <pattern>
-                               %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
-                       </pattern>
+               <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
+                       <providers>
+                               <timestamp><fieldName>timestamp</fieldName></timestamp>
+                               <message/>
+                               <mdc>
+                                       <fieldName>context</fieldName>
+                                       <excludeMdcKeyName>ServerIPAddress</excludeMdcKeyName>
+                                       <excludeMdcKeyName>EntryTimestamp</excludeMdcKeyName>
+                                       <excludeMdcKeyName>InvokeTimestamp</excludeMdcKeyName>
+                                       <excludeMdcKeyName>ErrorCode</excludeMdcKeyName>
+                                       <excludeMdcKeyName>ErrorDesc</excludeMdcKeyName>
+                               </mdc>
+                               <stackTrace>
+                                       <fieldName>exception</fieldName>
+                                       <throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
+                                               <exclude>^sun\.reflect\..*\.invoke</exclude>
+                                               <exclude>^net\.sf\.cglib\.proxy\.MethodProxy\.invoke</exclude>
+                                               <rootCauseFirst>true</rootCauseFirst>
+                                       </throwableConverter>
+                               </stackTrace>
+                               <threadName><fieldName>thread</fieldName></threadName>
+                               <loggerName>
+                                       <fieldName>logger</fieldName>
+                                       <shortenedLoggerNameLength>36</shortenedLoggerNameLength>
+                               </loggerName>
+                               <logLevel/>
+                               <pattern>
+                                       <pattern>{"logType":"app"}</pattern>
+                               </pattern>
+                       </providers>
                </encoder>
        </appender>
 
@@ -69,8 +98,8 @@
                <file>${logDirectory}/rest/sane.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <fileNamePattern>${logDirectory}/rest/sane.log.%d{yyyy-MM-dd}</fileNamePattern>
-                       <maxHistory>14</maxHistory>
-                       <cleanHistoryOnStart>true</cleanHistoryOnStart>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <encoder>
                        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n
        </appender>
 
        <appender name="asyncSANE" class="ch.qos.logback.classic.AsyncAppender">
-               <queueSize>1000</queueSize>
+               <queueSize>${queueSize}</queueSize>
                <includeCallerData>true</includeCallerData>
                <appender-ref ref="SANE" />
        </appender>
        <appender name="METRIC" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>${logDirectory}/rest/metrics.log</file>
-               <rollingPolicy
-                               class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+               <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <fileNamePattern>${logDirectory}/rest/metrics.log.%d{yyyy-MM-dd}</fileNamePattern>
-                       <maxHistory>14</maxHistory>
-                       <cleanHistoryOnStart>true</cleanHistoryOnStart>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <encoder>
                        <pattern>${metricPattern}</pattern>
        </appender>
 
        <appender name="asyncMETRIC" class="ch.qos.logback.classic.AsyncAppender">
-               <queueSize>1000</queueSize>
+               <queueSize>${queueSize}</queueSize>
                <includeCallerData>true</includeCallerData>
                <appender-ref ref="METRIC"/>
        </appender>
                <rollingPolicy
                                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <fileNamePattern>${logDirectory}/rest/debug.log.%d{yyyy-MM-dd}</fileNamePattern>
-                       <maxHistory>14</maxHistory>
-                       <cleanHistoryOnStart>true</cleanHistoryOnStart>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <encoder>
                        <pattern>${debugPattern}</pattern>
        </appender>
 
        <appender name="asyncDEBUG" class="ch.qos.logback.classic.AsyncAppender">
-               <queueSize>1000</queueSize>
+               <queueSize>${queueSize}</queueSize>
                <appender-ref ref="DEBUG" />
                <includeCallerData>true</includeCallerData>
        </appender>
        <appender name="ERROR"
                          class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>${logDirectory}/rest/error.log</file>
-               <rollingPolicy
-                               class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+               <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <fileNamePattern>${logDirectory}/rest/error.log.%d{yyyy-MM-dd}</fileNamePattern>
-               <maxHistory>14</maxHistory>
-               <cleanHistoryOnStart>true</cleanHistoryOnStart>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                        <level>WARN</level>
        </appender>
 
        <appender name="asyncERROR" class="ch.qos.logback.classic.AsyncAppender">
-               <queueSize>1000</queueSize>
+               <queueSize>${queueSize}</queueSize>
                <appender-ref ref="ERROR"/>
        </appender>
 
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <fileNamePattern>${logDirectory}/rest/audit.log.%d{yyyy-MM-dd}
                        </fileNamePattern>
-                       <maxHistory>14</maxHistory>
-                       <cleanHistoryOnStart>true</cleanHistoryOnStart>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <encoder>
                        <pattern>${auditPattern}</pattern>
        </appender>
 
        <appender name="asyncAUDIT" class="ch.qos.logback.classic.AsyncAppender">
-               <queueSize>1000</queueSize>
+               <queueSize>${queueSize}</queueSize>
                <includeCallerData>true</includeCallerData>
                <appender-ref ref="AUDIT" />
        </appender>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <fileNamePattern>${logDirectory}/rest/translog.log.%d{yyyy-MM-dd}
                        </fileNamePattern>
-                       <maxHistory>14</maxHistory>
-                       <cleanHistoryOnStart>true</cleanHistoryOnStart>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <encoder>
                        <pattern>${transLogPattern}</pattern>
        </appender>
 
        <appender name="asynctranslog" class="ch.qos.logback.classic.AsyncAppender">
-               <queueSize>1000</queueSize>
+               <queueSize>${queueSize}</queueSize>
                <includeCallerData>true</includeCallerData>
                <appender-ref ref="translog" />
        </appender>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/error.log.%d{yyyy-MM-dd}
                        </fileNamePattern>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <encoder>
                        <pattern>${errorPattern}</pattern>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/debug.log.%d{yyyy-MM-dd}
                        </fileNamePattern>
-                       <maxHistory>14</maxHistory>
-                       <cleanHistoryOnStart>true</cleanHistoryOnStart>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <encoder>
                        <pattern>${debugPattern}</pattern>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/dmaap-transaction.log.%d{yyyy-MM-dd}
                        </fileNamePattern>
-                       <maxHistory>14</maxHistory>
-                       <cleanHistoryOnStart>true</cleanHistoryOnStart>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <encoder>
                        <pattern>${auditPattern}</pattern>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/metrics.log.%d{yyyy-MM-dd}
                        </fileNamePattern>
-                       <maxHistory>14</maxHistory>
-                       <cleanHistoryOnStart>true</cleanHistoryOnStart>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <encoder>
                        <pattern>${metricPattern}</pattern>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <fileNamePattern>${logDirectory}/external/external.log.%d{yyyy-MM-dd}
                        </fileNamePattern>
-                       <maxHistory>14</maxHistory>
-                       <cleanHistoryOnStart>true</cleanHistoryOnStart>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <encoder>
                        <pattern>${debugPattern}</pattern>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <fileNamePattern>${logDirectory}/auth/auth.log.%d{yyyy-MM-dd}
                        </fileNamePattern>
-                       <maxHistory>14</maxHistory>
-                       <cleanHistoryOnStart>true</cleanHistoryOnStart>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <encoder>
                        <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}[%thread] %-5level %logger{1024} - %msg%n</pattern>
                </encoder>
        </appender>
        <appender name="asyncAUTH" class="ch.qos.logback.classic.AsyncAppender">
-               <queueSize>1000</queueSize>
+               <queueSize>${queueSize}</queueSize>
                <includeCallerData>true</includeCallerData>
                <appender-ref ref="auth" />
        </appender>
        </logger>
        <logger name="org.onap.aai.aaf" level="DEBUG" additivity="false">
                <appender-ref ref="asyncAUTH" />
+               <appender-ref ref="STDOUT" />
        </logger>
-       <logger name="org.onap.logging.filter.base.AbstractAuditLogFilter" level="INFO">
+       <logger name="org.onap.logging.filter.base.AbstractAuditLogFilter" level="INFO" additivity="false">
        <appender-ref ref="asyncAUDIT"/>
+               <appender-ref ref="STDOUT" />
     </logger>
-    <logger name="org.onap.aai.aailog.logs.AaiScheduledTaskAuditLog" level="INFO">
-               <appender-ref ref="asyncAUDIT"/>
-       </logger>
-    <logger name="org.onap.aai.aailog.logs.AaiDBTraversalMetricLog" level="INFO">
+    <logger name="org.onap.aai.aailog.logs.AaiScheduledTaskAuditLog" level="INFO" additivity="false">
+               <appender-ref ref="asyncAUDIT"/>
+               <appender-ref ref="STDOUT" />
+       </logger>
+    <logger name="org.onap.aai.aailog.logs.AaiDBTraversalMetricLog" level="INFO" additivity="false">
        <appender-ref ref="asyncMETRIC"/>
+               <appender-ref ref="STDOUT" />
     </logger>
-    <logger name="org.onap.aai.aailog.logs.AaiDmaapMetricLog" level="INFO">
+    <logger name="org.onap.aai.aailog.logs.AaiDmaapMetricLog" level="INFO" additivity="false">
        <appender-ref ref="dmaapAAIEventConsumerMetric"/>
+               <appender-ref ref="STDOUT" />
     </logger>
-    <logger name="org.onap.aai.logging.ErrorLogHelper" level="WARN">
+    <logger name="org.onap.aai.logging.ErrorLogHelper" level="WARN" additivity="false">
        <appender-ref ref="asyncERROR"/>
+               <appender-ref ref="STDOUT" />
     </logger>
        <logger name="org.onap.aai.interceptors.post" level="DEBUG" additivity="false">
                <appender-ref ref="asynctranslog" />
+               <appender-ref ref="STDOUT" />
        </logger>
        <logger name="org.onap.aai.web.JerseyConfiguration" level="DEBUG" additivity="false">
                <appender-ref ref="asyncDEBUG" />
+               <appender-ref ref="STDOUT" />
        </logger>
        <logger name="org.onap.aai.dmaap" level="DEBUG" additivity="false">
                <appender-ref ref="dmaapAAIEventConsumer" />
                <appender-ref ref="dmaapAAIEventConsumerDebug" />
+               <appender-ref ref="STDOUT" />
        </logger>
 
        <logger name="com.att.nsa.mr" level="INFO" >
                <appender-ref ref="dmaapAAIEventConsumerInfo" />
+               <appender-ref ref="STDOUT" />
        </logger>
 
        <root level="DEBUG">