Security Logging Fields
- logback core and encoder dependencies are added.
- New appender is added to log JSON format content on console.
Issue-ID: CPS-986
Signed-off-by: sourabh_sourabh <sourabh.sourabh@est.tech>
Change-Id: Ia72b27f306019fa259b3d6de4c5399f0ae734076
diff --git a/cps-service/src/main/resources/logback-spring.xml b/cps-service/src/main/resources/logback-spring.xml
index 3bba9f1..ce1af13 100644
--- a/cps-service/src/main/resources/logback-spring.xml
+++ b/cps-service/src/main/resources/logback-spring.xml
@@ -1,6 +1,6 @@
<!--
============LICENSE_START=======================================================
- Copyright (C) 2021 Nordix Foundation
+ Copyright (C) 2021-2022 Nordix Foundation
================================================================================
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -18,65 +18,58 @@
============LICENSE_END=========================================================
-->
-<configuration scan="true" debug="false">
- <include resource="org/springframework/boot/logging/logback/base.xml" />
+<configuration scan="true" scanPeriod="30 seconds" debug="false">
- <property name="queueSize" value="256" />
- <property name="maxFileSize" value="20MB" />
- <property name="maxHistory" value="30" />
- <property name="totalSizeCap" value="20MB" />
+ <include resource="org/springframework/boot/logging/logback/defaults.xml" />
+ <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
- <!-- log file names -->
- <property name="logName" value="cps" />
+ <springProperty scope="context" name="springAppName" source="spring.application.name"/>
+ <springProperty scope="context" name="username" source="security.auth.username"/>
+ <springProperty scope="context" name="loggingFormat" source="logging.format"/>
- <property name="currentTimeStamp" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX",UTC}"/>
+ <property name="currentTimeStamp" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX,UTC}"/>
- <property name="debugPattern"
- value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%thread|%X{RequestID}| %logger{50} - %msg%n" />
+ <appender name="jsonConsole"
+ class="ch.qos.logback.core.ConsoleAppender">
+ <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
+ <providers>
+ <pattern>
+ <omitEmptyFields>true</omitEmptyFields>
+ <pattern>
+ {
+ "logTimeStamp": "${currentTimeStamp:-}",
+ "logTypeName": "",
+ "logLevel": "%level",
+ "traceId": "%X{traceId:-}",
+ "statusCode": "",
+ "principalId": "${username:-}",
+ "serviceName": "${springAppName:-}",
+ "message": "%message",
+ "spanId": "%X{spanId:-}",
+ "processId": "${PID:-}",
+ "threadName": "%thread",
+ "class": "%logger{40}",
+ "exception": "%wEx"
+ }
+ </pattern>
+ </pattern>
+ </providers>
+ </encoder>
+ </appender>
- <property name="all-log-pattern"
- value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%thread|%X{RequestID}| %logger{50} - %msg%n" />
-
- <appender name="CONSOLE"
- class="ch.qos.logback.core.ConsoleAppender">
- <layout class="ch.qos.logback.classic.PatternLayout">
- <Pattern>${all-log-pattern}</Pattern>
- </layout>
+ <appender name="asyncConsole" class="ch.qos.logback.classic.AsyncAppender">
+ <if condition='property("loggingFormat").equals("json")'>
+ <then>
+ <appender-ref ref="jsonConsole"/>
+ </then>
+ <else>
+ <appender-ref ref="CONSOLE"/>
+ </else>
+ </if>
</appender>
<root level="INFO">
- <appender-ref ref="CONSOLE" />
+ <appender-ref ref="asyncConsole"/>
</root>
-<!-- Send logs to File & Rotate File -->
-<!-- <appender name="Debug"-->
-<!-- class="ch.qos.logback.core.rolling.RollingFileAppender">-->
-<!-- <file>../log/${logName}.log</file>-->
-<!-- <rollingPolicy-->
-<!-- class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
-<!-- <fileNamePattern>${logName}.%d{yyyy-MM-dd}.%i.log.zip-->
-<!-- </fileNamePattern>-->
-<!-- <maxFileSize>${maxFileSize}</maxFileSize>-->
-<!-- <maxHistory>${maxHistory}</maxHistory>-->
-<!-- <totalSizeCap>${totalSizeCap}</totalSizeCap>-->
-<!-- </rollingPolicy>-->
-<!-- <encoder>-->
-<!-- <pattern>${debugPattern}</pattern>-->
-<!-- </encoder>-->
-<!-- </appender>-->
-
-<!-- <appender name="asyncDebug" class="ch.qos.logback.classic.AsyncAppender">-->
-<!-- <queueSize>256</queueSize>-->
-<!-- <appender-ref ref="Debug" />-->
-<!-- <includeCallerData>true</includeCallerData>-->
-<!-- </appender>-->
-
-<!-- <logger name="org.onap.cps" level="DEBUG" additivity="false">-->
-<!-- <appender-ref ref="asyncDebug" />-->
-<!-- </logger>-->
-
-<!-- <root level="INFO">-->
-<!-- <appender-ref ref="asyncDebug" />-->
-<!-- </root>-->
-
</configuration>