AAI-resources logging structure enhancement 62/131062/1
authorRommel Pawar <rommel.pawar@bell.ca>
Wed, 21 Sep 2022 21:43:40 +0000 (14:43 -0700)
committerRommel Pawar <rommel.pawar@bell.ca>
Wed, 21 Sep 2022 21:46:39 +0000 (14:46 -0700)
Issue-ID: AAI-3524

Signed-off-by: Rommel Pawar <rommel.pawar@bell.ca>
Change-Id: I06de1942b3b215d615a7fcad1de6c6889111f912

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

index 056bba1..6f8d97d 100644 (file)
             <groupId>ch.qos.logback</groupId>
             <artifactId>logback-access</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.codehaus.janino</groupId>
+            <artifactId>janino</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>net.logstash.logback</groupId>
+            <artifactId>logstash-logback-encoder</artifactId>
+            <version>6.6</version>
+        </dependency>
         <dependency>
             <groupId>org.hamcrest</groupId>
             <artifactId>hamcrest-junit</artifactId>
index a318796..48f5f92 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>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log.%d{yyyy-MM-dd}.zip
                        </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 ee2c903..c7a2d3e 100644 (file)
 
        <property resource="application.properties" />
 
+       <property name="maxHistory" value='7' />
+       <property name="totalSizeCap" value='1GB' />
+       <property name="queueSize" value='1000'/>
+
        <property name="namespace" value="aai-resources"/>
 
        <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>
-       </appender>
 
        <appender name="SANE" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>${logDirectory}/rest/sane.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-                       <fileNamePattern>${logDirectory}/rest/sane.log.%d{yyyy-MM-dd}</fileNamePattern>
+                       <fileNamePattern>${logDirectory}/rest/sane.log.%d{yyyy-MM-dd}.zip</fileNamePattern>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <encoder>
                        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n
@@ -76,7 +75,7 @@
        </appender>
 
        <appender name="asyncSANE" class="ch.qos.logback.classic.AsyncAppender">
-               <queueSize>1000</queueSize>
+               <queueSize>${queueSize}</queueSize>
                <includeCallerData>true</includeCallerData>
                <appender-ref ref="SANE" />
        </appender>
@@ -84,7 +83,9 @@
                <file>${logDirectory}/rest/metrics.log</file>
                <rollingPolicy
                                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-                       <fileNamePattern>${logDirectory}/rest/metrics.log.%d{yyyy-MM-dd}</fileNamePattern>
+                       <fileNamePattern>${logDirectory}/rest/metrics.log.%d{yyyy-MM-dd}.zip</fileNamePattern>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <encoder>
                        <pattern>${metricPattern}</pattern>
@@ -92,7 +93,7 @@
        </appender>
 
        <appender name="asyncMETRIC" class="ch.qos.logback.classic.AsyncAppender">
-               <queueSize>1000</queueSize>
+               <queueSize>${queueSize}</queueSize>
                <includeCallerData>true</includeCallerData>
                <appender-ref ref="METRIC"/>
        </appender>
                <file>${logDirectory}/rest/debug.log</file>
                <rollingPolicy
                                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-                       <fileNamePattern>${logDirectory}/rest/debug.log.%d{yyyy-MM-dd}</fileNamePattern>
+                       <fileNamePattern>${logDirectory}/rest/debug.log.%d{yyyy-MM-dd}.zip</fileNamePattern>
+                       <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>
                <file>${logDirectory}/rest/error.log</file>
                <rollingPolicy
                                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-                       <fileNamePattern>${logDirectory}/rest/error.log.%d{yyyy-MM-dd}</fileNamePattern>
+                       <fileNamePattern>${logDirectory}/rest/error.log.%d{yyyy-MM-dd}.zip</fileNamePattern>
+                       <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>
 
                class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>${logDirectory}/rest/audit.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-                       <fileNamePattern>${logDirectory}/rest/audit.log.%d{yyyy-MM-dd}
+                       <fileNamePattern>${logDirectory}/rest/audit.log.%d{yyyy-MM-dd}.zip
                        </fileNamePattern>
+                       <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>
                </filter>
                <file>${logDirectory}/rest/translog.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-                       <fileNamePattern>${logDirectory}/rest/translog.log.%d{yyyy-MM-dd}
+                       <fileNamePattern>${logDirectory}/rest/translog.log.%d{yyyy-MM-dd}.zip
                        </fileNamePattern>
+                       <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>
                </filter>
                <File>${logDirectory}/dmaapAAIEventConsumer/error.log</File>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-                       <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/error.log.%d{yyyy-MM-dd}
+                       <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/error.log.%d{yyyy-MM-dd}.zip
                        </fileNamePattern>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <encoder>
                        <pattern>${errorPattern}</pattern>
                </filter>
                <File>${logDirectory}/dmaapAAIEventConsumer/debug.log</File>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-                       <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/debug.log.%d{yyyy-MM-dd}
+                       <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/debug.log.%d{yyyy-MM-dd}.zip
                        </fileNamePattern>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <encoder>
                        <pattern>${debugPattern}</pattern>
                </filter>
                <File>${logDirectory}/dmaapAAIEventConsumer/dmaap-transaction.log</File>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-                       <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/dmaap-transaction.log.%d{yyyy-MM-dd}
+                       <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/dmaap-transaction.log.%d{yyyy-MM-dd}.zip
                        </fileNamePattern>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <encoder>
                        <pattern>${auditPattern}</pattern>
                </filter>
                <File>${logDirectory}/dmaapAAIEventConsumer/metrics.log</File>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-                       <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/metrics.log.%d{yyyy-MM-dd}
+                       <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/metrics.log.%d{yyyy-MM-dd}.zip
                        </fileNamePattern>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <encoder>
                        <pattern>${metricPattern}</pattern>
                </filter>
                <file>${logDirectory}/external/external.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-                       <fileNamePattern>${logDirectory}/external/external.log.%d{yyyy-MM-dd}
+                       <fileNamePattern>${logDirectory}/external/external.log.%d{yyyy-MM-dd}.zip
                        </fileNamePattern>
+                       <maxHistory>${maxHistory}</maxHistory>
+                       <totalSizeCap>${totalSizeCap}</totalSizeCap>
                </rollingPolicy>
                <encoder>
                        <pattern>${debugPattern}</pattern>
                </filter>
                <file>${logDirectory}/auth/auth.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-                       <fileNamePattern>${logDirectory}/auth/auth.log.%d{yyyy-MM-dd}
+                       <fileNamePattern>${logDirectory}/auth/auth.log.%d{yyyy-MM-dd}.zip
                        </fileNamePattern>
+                       <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>
+
+       <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+               <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>
+
        <!-- logback internals logging -->
 
        <logger name="ch.qos.logback.classic" level="WARN" />