Security Logging Fields 61/129061/6
authorsourabh_sourabh <sourabh.sourabh@est.tech>
Wed, 4 May 2022 10:38:52 +0000 (11:38 +0100)
committersourabh_sourabh <sourabh.sourabh@est.tech>
Mon, 9 May 2022 22:58:14 +0000 (23:58 +0100)
- logback encoder and sleuth 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: Id7e4d836188da54b94144076a8755e4a2643a7ad

pom.xml
src/main/resources/application.yml
src/main/resources/logback-spring.xml [new file with mode: 0644]
src/test/resources/application.yml

diff --git a/pom.xml b/pom.xml
index 3335412..d18acff 100644 (file)
--- a/pom.xml
+++ b/pom.xml
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
+            <dependency>
+                <groupId>net.logstash.logback</groupId>
+                <artifactId>logstash-logback-encoder</artifactId>
+                <version>7.0.1</version>
+            </dependency>
+            <dependency>
+                <groupId>org.codehaus.janino</groupId>
+                <artifactId>janino</artifactId>
+                <version>3.1.7</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
     <dependencies>
             <artifactId>kafka</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-sleuth</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>net.logstash.logback</groupId>
+            <artifactId>logstash-logback-encoder</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.janino</groupId>
+            <artifactId>janino</artifactId>
+        </dependency>
     </dependencies>
     <build>
         <resources>
index 71a689c..8be97d2 100644 (file)
@@ -39,6 +39,8 @@ security:
 # This is a known issue with springfox and springboot introduced in 2.6.x:
 # https://github.com/springfox/springfox/issues/3462
 spring:
+  application:
+    name: ncmp-dmi-plugin
   mvc:
     pathmatch:
       matching-strategy: ANT_PATH_MATCHER
@@ -89,6 +91,7 @@ sdnc:
     password: ${SDNC_PASSWORD}
 
 logging:
+  format: json
   level:
     org.springframework: ERROR
     org.onap.cps: DEBUG
diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml
new file mode 100644 (file)
index 0000000..355209b
--- /dev/null
@@ -0,0 +1,75 @@
+<!--
+ ============LICENSE_START=======================================================
+ Copyright (C) 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.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ SPDX-License-Identifier: Apache-2.0
+ ============LICENSE_END=========================================================
+-->
+
+<configuration scan="true" scanPeriod="30 seconds" debug="false">
+
+    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
+    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
+
+    <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}"/>
+
+    <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>
+
+    <appender name="asyncConsole" class="ch.qos.logback.classic.AsyncAppender">
+        <if condition='property("loggingFormat").equalsIgnoreCase("json")'>
+            <then>
+                <appender-ref ref="jsonConsole"/>
+            </then>
+            <else>
+                <appender-ref ref="CONSOLE"/>
+            </else>
+        </if>
+    </appender>
+
+    <root level="INFO">
+        <appender-ref ref="asyncConsole"/>
+    </root>
+
+</configuration>
index afaaa4d..0d3784f 100644 (file)
@@ -45,6 +45,8 @@ dmi:
     url: some url for the dmi service
 
 spring:
+  application:
+    name: ncmp-dmi-plugin
   kafka:
     bootstrap-servers: localhost:9092
     security:
@@ -59,3 +61,5 @@ app:
     async-m2m:
       topic: my-topic-name
 
+logging:
+  format: json