Security Logging Fields
[cps.git] / cps-service / src / main / resources / logback-spring.xml
index 8b56638..ce1af13 100644 (file)
@@ -1,6 +1,6 @@
 <!--
  ============LICENSE_START=======================================================
Modification 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.
  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" debug="false">
-    <include resource="org/springframework/boot/logging/logback/base.xml" />
-
-    <property name="queueSize" value="256" />
-    <property name="maxFileSize" value="20MB" />
-    <property name="maxHistory" value="30" />
-    <property name="totalSizeCap" value="20MB" />
+<configuration scan="true" scanPeriod="30 seconds" debug="false">
 
-    <!-- log file names -->
-    <property name="logName" value="cps" />
+    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
+    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
 
-    <property name="currentTimeStamp" value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;,UTC}"/>
+    <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="debugPattern"
-        value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%thread|%X{RequestID}| %logger{50} - %msg%n" />
+    <property name="currentTimeStamp" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX,UTC}"/>
 
-    <property name="all-log-pattern"
-      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>
 
-    <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>
\ No newline at end of file
+</configuration>