Merge "Enable Cassandra for AAI in minimal ONAP environment"
authorSylvain Desbureaux <sylvain.desbureaux@orange.com>
Tue, 17 Dec 2019 18:58:54 +0000 (18:58 +0000)
committerGerrit Code Review <gerrit@onap.org>
Tue, 17 Dec 2019 18:58:54 +0000 (18:58 +0000)
12 files changed:
kubernetes/sdc/charts/sdc-fe/values.yaml
kubernetes/sdc/charts/sdc-wfd-be/templates/_helper.tpl
kubernetes/sdc/charts/sdc-wfd-be/templates/deployment.yaml
kubernetes/sdc/charts/sdc-wfd-be/templates/service.yaml
kubernetes/sdc/charts/sdc-wfd-be/values.yaml
kubernetes/sdc/charts/sdc-wfd-fe/templates/_helper.tpl [new file with mode: 0644]
kubernetes/sdc/charts/sdc-wfd-fe/templates/deployment.yaml
kubernetes/sdc/charts/sdc-wfd-fe/templates/service.yaml
kubernetes/sdc/charts/sdc-wfd-fe/values.yaml
kubernetes/sdc/templates/secrets.yaml
kubernetes/sdc/values.yaml
kubernetes/vid/resources/config/log/vid/logback.xml

index a435b59..c6f39f9 100644 (file)
@@ -38,8 +38,8 @@ config:
     dcae_source_url: "https://sdc.dcae.plugin.simpledemo.onap.org:30264/dcaed/#/home"
     dcae_dt_discovery_url: "https://sdc-dcae-dt:9446/dcae/#/dcae/home"
     dcae_dt_source_url: "https://sdc.dcae.plugin.simpledemo.onap.org:30266/dcae/#/dcae/home"
-    workflow_discovery_url: "http://sdc-wfd-fe:8080/workflows"
-    workflow_source_url: "https://sdc.workflow.plugin.simpledemo.onap.org:30431/workflows/"
+    workflow_discovery_url: "https://sdc-wfd-fe:8443/workflows"
+    workflow_source_url: "https://sdc.workflow.plugin.simpledemo.onap.org:30256/workflows/"
 
 # default number of instances
 replicaCount: 1
index c69fb7c..298a2cd 100644 (file)
@@ -1,29 +1 @@
-{{- define "sdc-wfd-be.volumes" }}
-    {{ if .Values.config.cassandraSSLEnabled }}
-    - name: {{ include "common.fullname" . }}-cassandra-client-truststore
-      hostPath:
-        path: /etc/cassandra-client-truststore/truststore
-        type: File
-    {{- end }}
-    {{ if .Values.config.serverSSLEnabled }}
-    - name: {{ include "common.fullname" . }}-server-https-keystore
-      hostPath:
-        path: /config/server-https-keystore/keystore
-        type: File
-    {{- end }}
-{{- end }}
-
-{{- define "sdc-wfd-be.volumeMounts" }}
-    {{ if .Values.config.cassandraSSLEnabled }}
-    - name: {{ include "common.fullname" . }}-cassandra-client-truststore
-      mountPath: /etc/cassandra-client-truststore/truststore
-      subPath: truststore
-      readOnly: true
-    {{- end }}
-    {{ if .Values.config.serverSSLEnabled }}
-    - name: {{ include "common.fullname" . }}-server-https-keystore
-      mountPath: /etc/server-https-keystore/keystore
-      subPath: keystore
-      readOnly: true
-    {{- end }}
-{{- end }}
\ No newline at end of file
+{{- define "wfd-be.internalPort" }}{{ if .Values.config.serverSSLEnabled }}{{ .Values.service.internalPort2 }}{{ else }}{{ .Values.service.internalPort }}{{ end }}{{- end }}
index 31ab7d5..00a986f 100644 (file)
@@ -53,20 +53,19 @@ spec:
           image: "{{ include "common.repository" . }}/{{ .Values.image }}"
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
           ports:
-          - containerPort: {{ .Values.service.internalPort }}
-          - containerPort: {{ .Values.service.internalPort2 }}
+          - containerPort: {{ template "wfd-be.internalPort" . }}
           # disable liveness probe when breakpoints set in debugger
           # so K8s doesn't restart unresponsive container
           {{ if .Values.liveness.enabled }}
           livenessProbe:
             tcpSocket:
-              port: {{ .Values.service.internalPort2 }}
+              port: {{ template "wfd-be.internalPort" . }}
             initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
             periodSeconds: {{ .Values.liveness.periodSeconds }}
           {{ end }}
           readinessProbe:
             tcpSocket:
-              port: {{ .Values.service.internalPort2 }}
+              port: {{ template "wfd-be.internalPort" . }}
             initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
             periodSeconds: {{ .Values.readiness.periodSeconds }}
           env:
@@ -89,7 +88,8 @@ spec:
           - name: CS_TRUST_STORE_PATH
             value: "{{ .Values.config.cassandraTrustStorePath }}"
           - name: CS_TRUST_STORE_PASSWORD
-            value: "{{ .Values.config.cassandraTrustStorePassword }}"
+            valueFrom:
+              secretKeyRef: {name: {{ .Release.Name }}-sdc-cs-secrets, key: cs_truststore_password}
           - name: SDC_PROTOCOL
             value: "{{ .Values.config.sdcProtocol }}"
           - name: SDC_ENDPOINT
@@ -97,7 +97,8 @@ spec:
           - name: SDC_USER
             value: "{{ .Values.config.sdcExternalUser }}"
           - name: SDC_PASSWORD
-            value: "{{ .Values.config.sdcExternalUserPassword }}"
+            valueFrom:
+              secretKeyRef: {name: {{ .Release.Name }}-sdc-cs-secrets, key: wf_external_user_password}
           - name: SERVER_SSL_ENABLED
             value: "{{ .Values.config.serverSSLEnabled }}"
           - name: SERVER_SSL_KEYSTORE_TYPE
@@ -105,10 +106,14 @@ spec:
           - name: SERVER_SSL_KEYSTORE_PATH
             value: "{{ .Values.config.serverSSLKeyStorePath }}"
           - name: SERVER_SSL_KEY_PASSWORD
-            value: "{{ .Values.config.serverSSLKeyPassword }}"
-          volumeMounts:
-            {{- template "sdc-wfd-be.volumeMounts" . }}
-      volumes:
-        {{- template "sdc-wfd-be.volumes" . }}
+            valueFrom:
+              secretKeyRef: {name: {{ .Release.Name }}-sdc-cs-secrets, key: keystore_password}
+          - name: SERVER_SSL_TRUSTSTORE_TYPE
+            value: "{{ .Values.config.serverSSLTrustStoreType }}"
+          - name: SERVER_SSL_TRUSTSTORE_PATH
+            value: "{{ .Values.config.serverSSLTrustStorePath }}"
+          - name: SERVER_SSL_TRUST_PASSWORD
+            valueFrom:
+              secretKeyRef: {name: {{ .Release.Name }}-sdc-cs-secrets, key: truststore_password}
       imagePullSecrets:
       - name: "{{ include "common.namespace" . }}-docker-registry-key"
index 14a937f..fee95ba 100644 (file)
@@ -28,13 +28,13 @@ spec:
   type: {{ .Values.service.type }}
   ports:
     {{if eq .Values.service.type "NodePort" -}}
-    - port: {{ .Values.service.internalPort }}
+    - port: {{ template "wfd-be.internalPort" . }}
       nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
-      name: {{ .Values.service.portName | default "http" }}
+      name: {{ .Values.service.portName }}
     {{- else -}}
-    - port: {{ .Values.service.externalPort }}
-      targetPort: {{ .Values.service.internalPort }}
-      name: {{ .Values.service.portName | default "http" }}
+    - port: {{ if .Values.config.serverSslEnabled }}{{ .Values.service.externalPort2 }}{{ else }}{{ .Values.service.externalPort }}{{ end }}
+      targetPort: {{ template "wfd-be.internalPort" . }}
+      name: {{ .Values.service.portName }}
     {{- end}}
   selector:
     app: {{ include "common.name" . }}
index 92903ba..68f4876 100644 (file)
@@ -28,13 +28,10 @@ global:
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/workflow-backend:1.5.2
-configInitImage: onap/workflow-init:1.5.2
+image: onap/workflow-backend:1.6.0
+configInitImage: onap/workflow-init:1.6.0
 pullPolicy: Always
 
-# flag to enable debugging - application support required
-debugEnabled: false
-
 initJob:
   enabled: true
 
@@ -43,17 +40,21 @@ config:
   cassandraAuthenticationEnabled: true
   cassandraThriftClientPort: 9160
   cassandraClientPort: 9042
+
   sdcProtocol: HTTPS
   sdcEndpoint: sdc-be:8443
   sdcExternalUser: workflow
-  sdcExternalUserPassword: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
-  serverSSLEnabled: false
+
+  serverSSLEnabled: true
+
   serverSSLKeyStoreType: jks
-  serverSSLKeyStorePath: etc/org.onap.sdc.p12
-  serverSSLKeyPassword: "!ppJ.JvWn0hGh)oVF]([Kv)^"
+  serverSSLKeyStorePath: /etc/keystore
+
+  serverSSLTrustStoreType: jks
+  serverSSLTrustStorePath: /etc/truststore
+
   cassandraSSLEnabled: false
-  cassandraTrustStorePath: /etc/cassandra-client-truststore/truststore
-  cassandraTrustStorePassword: password
+  cassandraTrustStorePath: /etc/truststore
 
 # default number of instances
 replicaCount: 1
@@ -76,12 +77,13 @@ readiness:
 
 service:
   type: NodePort
+  portName: sdc-wfd-be
   internalPort: 8080
   externalPort: 8080
   internalPort2: 8443
   externalPort2: 8443
-  portName: sdc-wfd-be
-  nodePort: "57"
+  nodePort: "57" # only one node port. set to http or https port depending on isHttpsEnabled property
+
 
 ingress:
   enabled: false
diff --git a/kubernetes/sdc/charts/sdc-wfd-fe/templates/_helper.tpl b/kubernetes/sdc/charts/sdc-wfd-fe/templates/_helper.tpl
new file mode 100644 (file)
index 0000000..546bab7
--- /dev/null
@@ -0,0 +1 @@
+{{- define "wfd-fe.internalPort" }}{{ if .Values.config.isHttpsEnabled }}{{ .Values.service.internalPort2 }}{{ else }}{{ .Values.service.internalPort }}{{ end }}{{- end }}
index 1daee71..08ecaa6 100644 (file)
@@ -50,18 +50,17 @@ spec:
           image: "{{ include "common.repository" . }}/{{ .Values.image }}"
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
           ports:
-          - containerPort: {{ .Values.service.internalPort }}
-          - containerPort: {{ .Values.service.internalPort2 }}
+          - containerPort: {{ template "wfd-fe.internalPort" . }}
           {{ if .Values.liveness.enabled }}
           livenessProbe:
             tcpSocket:
-              port: {{ .Values.service.internalPort }}
+              port: {{ template "wfd-fe.internalPort" . }}
             initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
             periodSeconds: {{ .Values.liveness.periodSeconds }}
           {{ end }}
           readinessProbe:
             tcpSocket:
-              port: {{ .Values.service.internalPort }}
+              port: {{ template "wfd-fe.internalPort" . }}
             initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
             periodSeconds: {{ .Values.readiness.periodSeconds }}
           env:
@@ -75,13 +74,17 @@ spec:
             value: "{{ .Values.config.isHttpsEnabled}}"
             {{ if and .Values.config.isHttpsEnabled (eq .Values.security.isDefaultStore false) }}
           - name: KEYSTORE_PASS
-            value: "{{ .Values.security.keystorePass}}"
+            valueFrom:
+              secretKeyRef: {name: {{ .Release.Name }}-sdc-cs-secrets, key: keystore_password}
           - name: TRUSTSTORE_PASS
-            value: "{{ .Values.security.truststorePass}}"
+            valueFrom:
+              secretKeyRef: {name: {{ .Release.Name }}-sdc-cs-secrets, key: truststore_password}
           - name: TRUSTSTORE_PATH
             value: "{{ .Values.security.storePath }}/{{ .Values.security.truststoreFilename }}"
           - name: KEYSTORE_PATH
             value: "{{ .Values.security.storePath }}/{{ .Values.security.keystoreFilename }}"
+          - name: TRUST_ALL
+            value: "{{ .Values.config.isTrustAll}}"
             {{ end }}
           volumeMounts:
           - name: {{ include "common.fullname" . }}-localtime
index 87ca360..d8a1055 100644 (file)
@@ -29,7 +29,7 @@ metadata:
           "version": "v1",
           "url": "/",
           "protocol": "UI",
-          "port": "{{ .Values.service.internalPort }}",
+          "port": "{{ .Values.service.internalPort2 }}",
           "visualRange":"0|1"
       }
       ]'
@@ -37,19 +37,13 @@ spec:
   type: {{ .Values.service.type }}
   ports:
     {{if eq .Values.service.type "NodePort" -}}
-    - port: {{ .Values.service.internalPort }}
+    - port: {{ template "wfd-fe.internalPort" . }}
       nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
-      name: {{ .Values.service.portName | default "http" }}
-    - port: {{ .Values.service.internalPort2 }}
-      nodePort: {{ .Values.global.nodePortPrefixExt | default .Values.nodePortPrefixExt }}{{ .Values.service.nodePort2 }}
-      name: {{ .Values.service.portName2 | default "https" }}
+      name: {{ .Values.service.portName  }}
     {{- else -}}
-    - port: {{ .Values.service.externalPort }}
-      targetPort: {{ .Values.service.internalPort }}
-      name: {{ .Values.service.portName | default "http" }}
-    - port: {{ .Values.service.externalPort2 }}
-      targetPort: {{ .Values.service.internalPort2 }}
-      name: {{ .Values.service.portName2 | default "https" }}
+    - port:  {{ if .Values.config.isHttpsEnabled }}{{ .Values.service.externalPort2 }}{{ else }}{{ .Values.service.externalPort }}{{ end }}
+      targetPort: {{ template "wfd-fe.internalPort" . }}
+      name: {{ .Values.service.portName }}
     {{- end}}
   selector:
     app: {{ include "common.name" . }}
index 21c7c17..fc30297 100644 (file)
@@ -28,7 +28,7 @@ global:
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/workflow-frontend:1.5.2
+image: onap/workflow-frontend:1.6.0
 pullPolicy: Always
 
 # flag to enable debugging - application support required
@@ -36,16 +36,15 @@ debugEnabled: false
 
 config:
   javaOptions: "-Xmx256m -Xms256m"
-  backendServerURL: "http://sdc-wfd-be:8080"
+  backendServerURL: "https://sdc-wfd-be:8443"
   isHttpsEnabled: true
-
+  # following flag decides whether to check the certificate on the outgoing proxy request or whether to trust all parties
+  isTrustAll: true
 # https relevant settings. Change in case you have other trust files then default ones.
 security:
   isDefaultStore: false
   truststoreFilename: "org.onap.sdc.trust.jks"
   keystoreFilename: "org.onap.sdc.p12"
-  keystorePass: "!ppJ.JvWn0hGh)oVF]([Kv)^"
-  truststorePass: "].][xgtze]hBhz*wy]}m#lf*"
   storePath: "etc"
 
 # default number of instances
@@ -71,12 +70,10 @@ service:
   type: NodePort
   internalPort: 8080
   externalPort: 8080
-  portName: sdc-wfd-fe
-  nodePort: "56"
-  portName2: sdc-wfd-fe2
   internalPort2: 8443
   externalPort2: 8443
-  nodePort2: "31"
+  portName: sdc-wfd-fe
+  nodePort: "56" # only one node port. set to http or https port depending on isHttpsEnabled property
 
 ingress:
   enabled: false
@@ -91,7 +88,6 @@ ingress:
     nginx.ingress.kubernetes.io/ssl-redirect: "true"
     nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
     nginx.ingress.kubernetes.io/rewrite-target: "/workflows/"
-    nginx.ingress.kubernetes.io/server-snippet: "underscores_in_headers on"
 
 resources: {}
   # We usually recommend not to specify default resources and to leave this as a conscious
index b3470e2..1f59ab2 100644 (file)
@@ -30,3 +30,9 @@ data:
   sdc_password: "{{ .Values.global.secrets.sdc_password }}"
   #default user:
   cs_password: "{{ .Values.global.secrets.cs_password }}"
+  cs_truststore_password: "{{ .Values.global.secrets.cs_truststore_password }}"
+  # ssl - stores
+  truststore_password: "{{ .Values.global.secrets.truststore_password }}"
+  keystore_password: "{{ .Values.global.secrets.keystore_password }}"
+  # workflow
+  wf_external_user_password: "{{ .Values.global.secrets.wf_external_user_password }}"
\ No newline at end of file
index cafa59a..a7006bc 100644 (file)
@@ -22,6 +22,10 @@ global:
     sdc_password: QWExMjM0JV4h
     #Should be the password of shared cassandra instance/chart
     cs_password: Y2Fzc2FuZHJh
+    cs_truststore_password: XS5dW3hndHplXWhCaHoqd3ldfW0jbGYq
+    truststore_password: XS5dW3hndHplXWhCaHoqd3ldfW0jbGYq
+    keystore_password: IXBwSi5KdlduMGhHaClvVkZdKFtLdile
+    wf_external_user_password: S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==
   ubuntuInitRepository: oomk8s
   ubuntuInitImage: ubuntu-init:1.0.0
   cassandra:
index 49db781..7f62756 100644 (file)
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!--\r
-  ================================================================================\r
-  eCOMP Portal SDK\r
-  ================================================================================\r
-  Copyright (C) 2017 AT&amp;T Intellectual Property\r
-  ================================================================================\r
-  Licensed under the Apache License, Version 2.0 (the "License");\r
-  you may not use this file except in compliance with the License.\r
-  You may obtain a copy of the License at\r
-  \r
-       http://www.apache.org/licenses/LICENSE-2.0\r
-  \r
-  Unless required by applicable law or agreed to in writing, software\r
-  distributed under the License is distributed on an "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-  See the License for the specific language governing permissions and\r
-  limitations under the License.\r
-  ================================================================================\r
-  -->\r
-<configuration scan="true" scanPeriod="3 seconds" debug="true">\r
-   <!--  specify the base path of the log directory -->\r
-   <property name="logDir" value="/var/log/onap" />\r
-   <!--  specify the component name -->\r
-   <property name="componentName" value="vid" />\r
-   <!-- The directory where logs are written -->\r
-   <property name="logDirectory" value="${logDir}/${componentName}" />\r
-   <property name="pattern" value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}\t[%thread]\t%-5level\t%logger{36}\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n" />\r
-   <!--  log file names -->\r
-   <property name="generalLogName" value="application" />\r
-   <property name="errorLogName" value="error" />\r
-   <property name="metricsLogName" value="metrics" />\r
-   <property name="auditLogName" value="audit" />\r
-   <property name="debugLogName" value="debug" />\r
-   <!--  other constants -->\r
-   <property name="queueSize" value="256" />\r
-   <property name="maxFileSize" value="50MB" />\r
-   <property name="maxHistory" value="30" />\r
-   <property name="totalSizeCap" value="10GB" />\r
-   <!-- Example evaluator filter applied against console appender -->\r
-   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">\r
-      <encoder>\r
-         <pattern>${pattern}</pattern>\r
-      </encoder>\r
-   </appender>\r
-   <!-- ============================================================================ -->\r
-   <!-- EELF Appenders -->\r
-   <!-- ============================================================================ -->\r
-   <!-- The EELFAppender is used to record events to the general application \r
-    log -->\r
-   <appender name="EELF" class="ch.qos.logback.core.rolling.RollingFileAppender">\r
-      <file>${logDirectory}/${generalLogName}.log</file>\r
-      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
-         <fileNamePattern>${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>\r
-         <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">\r
-            <maxFileSize>${maxFileSize}</maxFileSize>\r
-         </timeBasedFileNamingAndTriggeringPolicy>\r
-         <maxHistory>${maxHistory}</maxHistory>\r
-         <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
-      </rollingPolicy>\r
-      <encoder>\r
-         <pattern>${pattern}</pattern>\r
-      </encoder>\r
-      <filter class="org.openecomp.portalapp.util.CustomLoggingFilter" />\r
-   </appender>\r
-   <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">\r
-      <queueSize>${queueSize}</queueSize>\r
-      <includeCallerData>true</includeCallerData>\r
-      <appender-ref ref="EELF" />\r
-   </appender>\r
-   <!-- EELF Security Appender. This appender is used to record security events \r
-    to the security log file. Security events are separate from other loggers \r
-    in EELF so that security log records can be captured and managed in a secure \r
-    way separate from the other logs. This appender is set to never discard any \r
-    events. -->\r
-   <!--     \r
-  <appender name="EELFSecurity"\r
-    class="ch.qos.logback.core.rolling.RollingFileAppender">\r
-    <file>${logDirectory}/${securityLogName}.log</file>\r
-    <rollingPolicy\r
-      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">\r
-      <fileNamePattern>${logDirectory}/${securityLogName}.%i.log.zip\r
-      </fileNamePattern>\r
-      <minIndex>1</minIndex>\r
-      <maxIndex>9</maxIndex>\r
-    </rollingPolicy>\r
-    <triggeringPolicy\r
-      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">\r
-      <maxFileSize>5MB</maxFileSize>\r
-    </triggeringPolicy>\r
-    <encoder>\r
-      <pattern>${defaultPattern}</pattern>\r
-    </encoder>\r
-  </appender>\r
-  \r
-  <appender name="asyncEELFSecurity" class="ch.qos.logback.classic.AsyncAppender">\r
-    <queueSize>256</queueSize>\r
-    <discardingThreshold>0</discardingThreshold>\r
-    <appender-ref ref="EELFSecurity" />\r
-  </appender>\r
-   -->\r
-   <!-- EELF Performance Appender. This appender is used to record performance \r
-    records. -->\r
-   <!--\r
-  <appender name="EELFPerformance"\r
-    class="ch.qos.logback.core.rolling.RollingFileAppender">\r
-    <file>${logDirectory}/${performanceLogName}.log</file>\r
-    <rollingPolicy\r
-      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">\r
-      <fileNamePattern>${logDirectory}/${performanceLogName}.%i.log.zip\r
-      </fileNamePattern>\r
-      <minIndex>1</minIndex>\r
-      <maxIndex>9</maxIndex>\r
-    </rollingPolicy>\r
-    <triggeringPolicy\r
-      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">\r
-      <maxFileSize>5MB</maxFileSize>\r
-    </triggeringPolicy>\r
-    <encoder>\r
-      <outputPatternAsHeader>true</outputPatternAsHeader>\r
-      <pattern>${defaultPattern}</pattern>\r
-    </encoder>\r
-  </appender>\r
-  <appender name="asyncEELFPerformance" class="ch.qos.logback.classic.AsyncAppender">\r
-    <queueSize>256</queueSize>\r
-    <appender-ref ref="EELFPerformance" />\r
-  </appender>\r
-  -->\r
-   <!-- EELF Server Appender. This appender is used to record Server related \r
-    logging events. The Server logger and appender are specializations of the \r
-    EELF application root logger and appender. This can be used to segregate Server \r
-    events from other components, or it can be eliminated to record these events \r
-    as part of the application root log. -->\r
-   <!--\r
-  <appender name="EELFServer"\r
-    class="ch.qos.logback.core.rolling.RollingFileAppender">\r
-    <file>${logDirectory}/${serverLogName}.log</file>\r
-    <rollingPolicy\r
-      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">\r
-      <fileNamePattern>${logDirectory}/${serverLogName}.%i.log.zip\r
-      </fileNamePattern>\r
-      <minIndex>1</minIndex>\r
-      <maxIndex>9</maxIndex>\r
-    </rollingPolicy>\r
-    <triggeringPolicy\r
-      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">\r
-      <maxFileSize>5MB</maxFileSize>\r
-    </triggeringPolicy>\r
-    <encoder>\r
-        <pattern>${defaultPattern}</pattern>\r
-    </encoder>\r
-  </appender>\r
-  <appender name="asyncEELFServer" class="ch.qos.logback.classic.AsyncAppender">\r
-    <queueSize>256</queueSize>\r
-    <appender-ref ref="EELFServer" />\r
-  </appender>\r
-   -->\r
-   <!-- EELF Policy Appender. This appender is used to record Policy engine \r
-    related logging events. The Policy logger and appender are specializations \r
-    of the EELF application root logger and appender. This can be used to segregate \r
-    Policy engine events from other components, or it can be eliminated to record \r
-    these events as part of the application root log. -->\r
-   <!--\r
-  <appender name="EELFPolicy"\r
-    class="ch.qos.logback.core.rolling.RollingFileAppender">\r
-    <file>${logDirectory}/${policyLogName}.log</file>\r
-    <rollingPolicy\r
-      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">\r
-      <fileNamePattern>${logDirectory}/${policyLogName}.%i.log.zip\r
-      </fileNamePattern>\r
-      <minIndex>1</minIndex>\r
-      <maxIndex>9</maxIndex>\r
-    </rollingPolicy>\r
-    <triggeringPolicy\r
-      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">\r
-      <maxFileSize>5MB</maxFileSize>\r
-    </triggeringPolicy>\r
-    <encoder>\r
-        <pattern>${defaultPattern}</pattern>\r
-    </encoder>\r
-  </appender>\r
-  <appender name="asyncEELFPolicy" class="ch.qos.logback.classic.AsyncAppender">\r
-    <queueSize>256</queueSize>\r
-    <appender-ref ref="EELFPolicy" />\r
-  </appender>\r
-  -->\r
-   <!-- EELF Audit Appender. This appender is used to record audit engine \r
-    related logging events. The audit logger and appender are specializations \r
-    of the EELF application root logger and appender. This can be used to segregate \r
-    Policy engine events from other components, or it can be eliminated to record \r
-    these events as part of the application root log. -->\r
-   <appender name="EELFAudit" class="ch.qos.logback.core.rolling.RollingFileAppender">\r
-      <file>${logDirectory}/${auditLogName}.log</file>\r
-      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
-         <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>\r
-         <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">\r
-            <maxFileSize>${maxFileSize}</maxFileSize>\r
-         </timeBasedFileNamingAndTriggeringPolicy>\r
-         <maxHistory>${maxHistory}</maxHistory>\r
-         <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
-      </rollingPolicy>\r
-      <encoder>\r
-         <pattern>${pattern}</pattern>\r
-      </encoder>\r
-   </appender>\r
-   <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">\r
-      <queueSize>${queueSize}</queueSize>\r
-      <appender-ref ref="EELFAudit" />\r
-   </appender>\r
-   <appender name="EELFMetrics" class="ch.qos.logback.core.rolling.RollingFileAppender">\r
-      <file>${logDirectory}/${metricsLogName}.log</file>\r
-      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
-         <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>\r
-         <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">\r
-            <maxFileSize>${maxFileSize}</maxFileSize>\r
-         </timeBasedFileNamingAndTriggeringPolicy>\r
-         <maxHistory>${maxHistory}</maxHistory>\r
-         <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
-      </rollingPolicy>\r
-      <encoder>\r
-         <pattern>${pattern}</pattern>\r
-      </encoder>\r
-   </appender>\r
-   <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">\r
-      <queueSize>${queueSize}</queueSize>\r
-      <appender-ref ref="EELFMetrics" />\r
-   </appender>\r
-   <appender name="EELFError" class="ch.qos.logback.core.rolling.RollingFileAppender">\r
-      <file>${logDirectory}/${errorLogName}.log</file>\r
-      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
-         <fileNamePattern>${logDirectory}/${errorLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>\r
-         <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">\r
-            <maxFileSize>${maxFileSize}</maxFileSize>\r
-         </timeBasedFileNamingAndTriggeringPolicy>\r
-         <maxHistory>${maxHistory}</maxHistory>\r
-         <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
-      </rollingPolicy>\r
-      <encoder>\r
-         <pattern>${pattern}</pattern>\r
-      </encoder>\r
-   </appender>\r
-   <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender">\r
-      <queueSize>${queueSize}</queueSize>\r
-      <appender-ref ref="EELFError" />\r
-   </appender>\r
-   <appender name="EELFDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">\r
-      <file>${logDirectory}/${debugLogName}.log</file>\r
-      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
-         <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>\r
-         <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">\r
-            <maxFileSize>${maxFileSize}</maxFileSize>\r
-         </timeBasedFileNamingAndTriggeringPolicy>\r
-         <maxHistory>${maxHistory}</maxHistory>\r
-         <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
-      </rollingPolicy>\r
-      <encoder>\r
-         <pattern>${pattern}</pattern>\r
-      </encoder>\r
-   </appender>\r
-   <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">\r
-      <queueSize>${queueSize}</queueSize>\r
-      <appender-ref ref="EELFDebug" />\r
-   </appender>\r
-   <!-- ============================================================================ -->\r
-   <!--  EELF loggers -->\r
-   <!-- ============================================================================ -->\r
-   <logger name="com.att.eelf" level="debug" additivity="false">\r
-      <appender-ref ref="asyncEELF" />\r
-   </logger>\r
-   <!--\r
-  <logger name="com.att.eelf.security" level="info" additivity="false">\r
-    <appender-ref ref="asyncEELFSecurity" />\r
-  </logger>\r
-  <logger name="com.att.eelf.perf" level="info" additivity="false">\r
-    <appender-ref ref="asyncEELFPerformance" />\r
-  </logger>\r
-  <logger name="com.att.eelf.server" level="info" additivity="false">\r
-    <appender-ref ref="asyncEELFServer" />\r
-  </logger>\r
-  <logger name="com.att.eelf.policy" level="info" additivity="false">\r
-    <appender-ref ref="asyncEELFPolicy" />\r
-  </logger>\r
-  -->\r
-   <logger name="com.att.eelf.audit" level="info" additivity="false">\r
-      <appender-ref ref="asyncEELFAudit" />\r
-   </logger>\r
-   <logger name="com.att.eelf.metrics" level="info" additivity="false">\r
-      <appender-ref ref="asyncEELFMetrics" />\r
-   </logger>\r
-   <logger name="com.att.eelf.error" level="info" additivity="false">\r
-      <appender-ref ref="asyncEELFError" />\r
-   </logger>\r
-   <logger name="com.att.eelf.debug" level="debug" additivity="false">\r
-      <appender-ref ref="asyncEELFDebug" />\r
-   </logger>\r
-   <root level="INFO">\r
-      <appender-ref ref="asyncEELF" />\r
-   </root>\r
-</configuration>\r
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ================================================================================
+  eCOMP Portal SDK
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property
+  ================================================================================
+  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.
+  ================================================================================
+  -->
+<configuration scan="true" scanPeriod="3 seconds" debug="true">
+   <!--  specify the component name -->
+   <property name="componentName" value="vid"/>
+   <!--  specify the base path of the log directory -->
+   <property name="logDirPrefix" value="/var/log/onap" />
+   <!-- The directory where logs are written -->
+   <property name="logDirectory" value="${logDirPrefix}/${componentName}" />
+
+   <!--  log file names -->
+   <property name="generalLogName" value="application" />
+   <property name="errorLogName" value="error" />
+   <property name="metricsLogName" value="metrics" />
+   <property name="auditLogName" value="audit" />
+   <property name="debugLogName" value="debug" />
+   <property name="outgoingRequestsLogName" value="outgoingRequests" />
+
+   <!--  other constants -->
+   <property name="queueSize" value="256" />
+   <property name="maxFileSize" value="50MB" />
+   <property name="maxHistory" value="30" />
+   <property name="totalSizeCap" value="10GB" />
+
+  <!-- ONAP Application Logging Specification v1.2 (Casablanca)
+       https://wiki.onap.org/pages/viewpage.action?pageId=28378955 -->
+
+   <property name="auditLoggerPattern"
+     value="%X{EntryTimestamp}|%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX,UTC}|%X{RequestID}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level||%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{ClientIPAddress}|%X{ClassName}|||%marker|%mdc|||%msg%n"/>
+
+   <property name="metricsLoggerPattern"
+     value="%X{InvokeTimestamp}|%X{LogTimestamp}|%X{RequestID}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|0|%X{ServerIPAddress}|%replace(%X{ElapsedTime}){' ms',''}|%X{ServerFQDN}|%X{ClientIPAddress}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{TargetVisualEntity}|%marker|%mdc|%X{CustomField3}|%X{CustomField4}| %msg%nopexception%n" />
+
+   <property name="errorLoggerPattern"
+     value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{AlertSeverity}|%X{ErrorCode}|%X{ErrorDescription}| %msg%nopexception%n" />
+
+   <property name="debugLoggerPattern" value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestID}|%msg %nopexception%replace(%xThrowable){'[\r\n]+', '\\\\n'}|^%n" />
+
+   <!-- use %class so library logging calls yield their class name -->
+   <property name="applicationLoggerPattern"
+     value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%.-5level|%class{36}| %msg%n" />
+
+
+
+   <!-- Example evaluator filter applied against console appender -->
+   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+      <encoder>
+         <pattern>${debugLoggerPattern}</pattern>
+      </encoder>
+   </appender>
+
+   <!-- ============================================================================ -->
+   <!-- EELF Appenders -->
+   <!-- ============================================================================ -->
+
+   <!-- The EELFAppender is used to record events to the general application log -->
+   <appender name="EELF" class="ch.qos.logback.core.rolling.RollingFileAppender">
+      <file>${logDirectory}/${generalLogName}.log</file>
+      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+         <fileNamePattern>${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+         <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+            <maxFileSize>${maxFileSize}</maxFileSize>
+         </timeBasedFileNamingAndTriggeringPolicy>
+         <maxHistory>${maxHistory}</maxHistory>
+         <totalSizeCap>${totalSizeCap}</totalSizeCap>
+      </rollingPolicy>
+      <encoder>
+         <pattern>${applicationLoggerPattern}</pattern>
+      </encoder>
+      <filter class="org.onap.portalapp.util.CustomLoggingFilter" />
+   </appender>
+
+   <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">
+      <queueSize>${queueSize}</queueSize>
+      <includeCallerData>true</includeCallerData>
+      <appender-ref ref="EELF" />
+   </appender>
+
+   <!-- EELF Security Appender. This appender is used to record security events
+    to the security log file. Security events are separate from other loggers 
+    in EELF so that security log records can be captured and managed in a secure 
+    way separate from the other logs. This appender is set to never discard any 
+    events. -->
+   <!--     
+  <appender name="EELFSecurity"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${securityLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${securityLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <pattern>${defaultPattern}</pattern>
+    </encoder>
+  </appender>
+  
+  <appender name="asyncEELFSecurity" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <discardingThreshold>0</discardingThreshold>
+    <appender-ref ref="EELFSecurity" />
+  </appender>
+   -->
+   <!-- EELF Performance Appender. This appender is used to record performance 
+    records. -->
+   <!--
+  <appender name="EELFPerformance"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${performanceLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${performanceLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <outputPatternAsHeader>true</outputPatternAsHeader>
+      <pattern>${defaultPattern}</pattern>
+    </encoder>
+  </appender>
+  <appender name="asyncEELFPerformance" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFPerformance" />
+  </appender>
+  -->
+   <!-- EELF Server Appender. This appender is used to record Server related 
+    logging events. The Server logger and appender are specializations of the 
+    EELF application root logger and appender. This can be used to segregate Server 
+    events from other components, or it can be eliminated to record these events 
+    as part of the application root log. -->
+   <!--
+  <appender name="EELFServer"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${serverLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${serverLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+        <pattern>${defaultPattern}</pattern>
+    </encoder>
+  </appender>
+  <appender name="asyncEELFServer" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFServer" />
+  </appender>
+   -->
+   <!-- EELF Policy Appender. This appender is used to record Policy engine 
+    related logging events. The Policy logger and appender are specializations 
+    of the EELF application root logger and appender. This can be used to segregate 
+    Policy engine events from other components, or it can be eliminated to record 
+    these events as part of the application root log. -->
+   <!--
+  <appender name="EELFPolicy"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${policyLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${policyLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+        <pattern>${defaultPattern}</pattern>
+    </encoder>
+  </appender>
+  <appender name="asyncEELFPolicy" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFPolicy" />
+  </appender>
+  -->
+   <!-- EELF Audit Appender. This appender is used to record audit engine 
+    related logging events. The audit logger and appender are specializations 
+    of the EELF application root logger and appender. This can be used to segregate 
+    Policy engine events from other components, or it can be eliminated to record 
+    these events as part of the application root log. -->
+   <appender name="EELFAudit" class="ch.qos.logback.core.rolling.RollingFileAppender">
+      <file>${logDirectory}/${auditLogName}.log</file>
+      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+         <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+         <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+            <maxFileSize>${maxFileSize}</maxFileSize>
+         </timeBasedFileNamingAndTriggeringPolicy>
+         <maxHistory>${maxHistory}</maxHistory>
+         <totalSizeCap>${totalSizeCap}</totalSizeCap>
+      </rollingPolicy>
+      <encoder>
+         <pattern>${auditLoggerPattern}</pattern>
+      </encoder>
+   </appender>
+   <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">
+      <queueSize>${queueSize}</queueSize>
+      <appender-ref ref="EELFAudit" />
+      <includeCallerData>true</includeCallerData>
+   </appender>
+
+   <appender name="EELFMetrics" class="ch.qos.logback.core.rolling.RollingFileAppender">
+      <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+        <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
+          <marker>INVOKE</marker>
+          <marker>INVOKE-RETURN</marker>
+        </evaluator>
+        <onMismatch>DENY</onMismatch>
+        <onMatch>ACCEPT</onMatch>
+      </filter>
+      <file>${logDirectory}/${metricsLogName}.log</file>
+      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+         <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+         <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+            <maxFileSize>${maxFileSize}</maxFileSize>
+         </timeBasedFileNamingAndTriggeringPolicy>
+         <maxHistory>${maxHistory}</maxHistory>
+         <totalSizeCap>${totalSizeCap}</totalSizeCap>
+      </rollingPolicy>
+      <encoder>
+      <pattern>${metricsLoggerPattern}</pattern>
+      </encoder>
+   </appender>
+   <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">
+      <queueSize>${queueSize}</queueSize>
+      <appender-ref ref="EELFMetrics" />
+      <includeCallerData>true</includeCallerData>
+   </appender>
+
+   <appender name="EELFError" class="ch.qos.logback.core.rolling.RollingFileAppender">
+      <filter class="ch.qos.logback.classic.filter.LevelFilter">
+        <level>ERROR</level>
+        <onMatch>ACCEPT</onMatch>
+        <onMismatch>NEUTRAL</onMismatch>
+      </filter>
+      <filter class="ch.qos.logback.classic.filter.LevelFilter">
+        <level>WARN</level>
+        <onMatch>ACCEPT</onMatch>
+        <onMismatch>DENY</onMismatch>
+      </filter>
+      <file>${logDirectory}/${errorLogName}.log</file>
+      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+         <fileNamePattern>${logDirectory}/${errorLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+         <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+            <maxFileSize>${maxFileSize}</maxFileSize>
+         </timeBasedFileNamingAndTriggeringPolicy>
+         <maxHistory>${maxHistory}</maxHistory>
+         <totalSizeCap>${totalSizeCap}</totalSizeCap>
+      </rollingPolicy>
+      <encoder>
+        <pattern>${errorLoggerPattern}</pattern>
+      </encoder>
+   </appender>
+
+   <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender">
+      <queueSize>${queueSize}</queueSize>
+      <appender-ref ref="EELFError" />
+      <includeCallerData>true</includeCallerData>
+   </appender>
+
+   <appender name="EELFDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
+      <file>${logDirectory}/${debugLogName}.log</file>
+      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+         <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+         <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+            <maxFileSize>${maxFileSize}</maxFileSize>
+         </timeBasedFileNamingAndTriggeringPolicy>
+         <maxHistory>${maxHistory}</maxHistory>
+         <totalSizeCap>${totalSizeCap}</totalSizeCap>
+      </rollingPolicy>
+      <encoder>
+         <pattern>${debugLoggerPattern}</pattern>
+      </encoder>
+   </appender>
+   <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
+      <queueSize>${queueSize}</queueSize>
+      <appender-ref ref="EELFDebug" />
+      <includeCallerData>true</includeCallerData>
+   </appender>
+
+   <appender name="OutgoingRequests" class="ch.qos.logback.core.rolling.RollingFileAppender">
+      <file>${logDirectory}/${outgoingRequestsLogName}.log</file>
+      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+         <fileNamePattern>${logDirectory}/${outgoingRequestsLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+         <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+            <maxFileSize>${maxFileSize}</maxFileSize>
+         </timeBasedFileNamingAndTriggeringPolicy>
+         <maxHistory>${maxHistory}</maxHistory>
+         <totalSizeCap>${totalSizeCap}</totalSizeCap>
+      </rollingPolicy>
+      <encoder>
+         <pattern>${debugLoggerPattern}</pattern>
+      </encoder>
+   </appender>
+   <appender name="asyncOutgoingRequests" class="ch.qos.logback.classic.AsyncAppender">
+      <queueSize>${queueSize}</queueSize>
+      <appender-ref ref="OutgoingRequests" />
+      <includeCallerData>true</includeCallerData>
+   </appender>
+
+
+   <!-- ============================================================================ -->
+   <!--  EELF loggers -->
+   <!-- ============================================================================ -->
+   <logger name="com.att.eelf" level="debug" additivity="false">
+      <appender-ref ref="asyncEELF" />
+   </logger>
+
+   <!--
+  <logger name="com.att.eelf.security" level="info" additivity="false">
+    <appender-ref ref="asyncEELFSecurity" />
+  </logger>
+  <logger name="com.att.eelf.perf" level="info" additivity="false">
+    <appender-ref ref="asyncEELFPerformance" />
+  </logger>
+  <logger name="com.att.eelf.server" level="info" additivity="false">
+    <appender-ref ref="asyncEELFServer" />
+  </logger>
+  <logger name="com.att.eelf.policy" level="info" additivity="false">
+    <appender-ref ref="asyncEELFPolicy" />
+  </logger>
+  -->
+
+   <logger name="org.onap.logging.filter.base.AbstractAuditLogFilter" level="info" additivity="false">
+      <appender-ref ref="asyncEELFAudit" />
+   </logger>
+
+   <logger name="org.onap.logging.filter.base.AbstractMetricLogFilter" level="info" additivity="false">
+      <appender-ref ref="asyncEELFMetrics" />
+   </logger>
+
+   <logger name="com.att.eelf.error" level="info" additivity="false">
+      <appender-ref ref="asyncEELFError" />
+      <appender-ref ref="asyncEELFDebug" />
+   </logger>
+
+   <logger name="com.att.eelf.debug" level="debug" additivity="false">
+      <appender-ref ref="asyncEELFDebug" />
+   </logger>
+
+   <logger name="http.requests.outgoing" level="DEBUG" additivity="false">
+      <appender-ref ref="asyncOutgoingRequests"/>
+   </logger>
+
+   <root level="INFO">
+      <appender-ref ref="asyncEELF" />
+      <appender-ref ref="asyncEELFError" />
+   </root>
+
+</configuration>