Add all required and reasonable MDCs
[dcaegen2/collectors/hv-ves.git] / sources / hv-collector-utils / src / main / kotlin / org / onap / dcae / collectors / veshv / utils / logging / Marker.kt
index 83fb9a5..9023528 100644 (file)
 package org.onap.dcae.collectors.veshv.utils.logging
 
 import org.slf4j.MarkerFactory
+import java.time.Instant
+import java.util.*
 
-enum class Marker(private val marker: org.slf4j.Marker) {
-    ENTRY(MarkerFactory.getMarker("ENTRY")),
-    EXIT(MarkerFactory.getMarker("EXIT")),
-    INVOKE(MarkerFactory.getMarker("INVOKE"));
+sealed class Marker(internal val slf4jMarker: org.slf4j.Marker, val mdc: Map<String, String> = emptyMap()) {
 
-    operator fun invoke() = marker
+    object Entry : Marker(ENTRY)
+    object Exit : Marker(EXIT)
+
+    class Invoke(id: UUID = UUID.randomUUID(), timestamp: Instant = Instant.now()) : Marker(INVOKE, mdc(id, timestamp)) {
+        companion object {
+            private fun mdc(id: UUID, timestamp: Instant) = mapOf(
+                    OnapMdc.INVOCATION_ID to id.toString(),
+                    OnapMdc.INVOCATION_TIMESTAMP to timestamp.toString()
+            )
+        }
+    }
+
+    companion object {
+        private val ENTRY = MarkerFactory.getMarker("ENTRY")
+        private val EXIT = MarkerFactory.getMarker("EXIT")
+        private val INVOKE = MarkerFactory.getMarker("INVOKE")
+    }
 }