summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/sdc/common/onaplog/Stopwatch.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/onap/sdc/common/onaplog/Stopwatch.java')
-rw-r--r--src/main/java/org/onap/sdc/common/onaplog/Stopwatch.java59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/main/java/org/onap/sdc/common/onaplog/Stopwatch.java b/src/main/java/org/onap/sdc/common/onaplog/Stopwatch.java
new file mode 100644
index 0000000..de56853
--- /dev/null
+++ b/src/main/java/org/onap/sdc/common/onaplog/Stopwatch.java
@@ -0,0 +1,59 @@
+package org.onap.sdc.common.onaplog;
+
+import org.onap.sdc.common.onaplog.interfaces.IOnapLogConfiguration;
+import org.onap.sdc.common.onaplog.interfaces.IStopWatch;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
+
+import java.time.Clock;
+import java.time.Duration;
+import java.time.LocalDateTime;
+
+/**
+ * Created by dd4296 on 12/13/2017.
+ * this is local implementation of the stopwatch class from EELF standard with the same interface
+ * can be replaced if needed with EELF lib
+ */
+public class Stopwatch implements IStopWatch {
+
+ private static final Logger log = LoggerFactory.getLogger(Stopwatch.class.getName());
+
+ Stopwatch() {
+ }
+
+ public void start() {
+ if (MDC.get(IOnapLogConfiguration.MDC_BEGIN_TIMESTAMP) == null || MDC.get(IOnapLogConfiguration.MDC_BEGIN_TIMESTAMP).trim().length() == 0) {
+ MDC.put(IOnapLogConfiguration.MDC_BEGIN_TIMESTAMP, generatedTimeNow());
+ }
+ }
+
+ public void stop() {
+ if (MDC.get(IOnapLogConfiguration.MDC_BEGIN_TIMESTAMP) == null) {
+ log.error("call to stop without calling start first, this is not compliant with EELF format");
+ }
+ MDC.put(IOnapLogConfiguration.MDC_END_TIMESTAMP, generatedTimeNow());
+ setElapsedTime();
+ }
+
+ private void setElapsedTime() {
+
+ try {
+
+ final LocalDateTime startTime = LocalDateTime.parse(MDC.get(IOnapLogConfiguration.MDC_BEGIN_TIMESTAMP));
+ final LocalDateTime endTime = LocalDateTime.parse(MDC.get(IOnapLogConfiguration.MDC_END_TIMESTAMP));
+
+ final Duration timeDifference = Duration.between(startTime, endTime);
+
+ MDC.put(IOnapLogConfiguration.MDC_ELAPSED_TIME, String.valueOf(timeDifference.toMillis()));
+
+ } catch(Exception ex) {
+ log.error("failed to calculate elapsed time",ex);
+ }
+ }
+
+ private String generatedTimeNow() {
+ return String.valueOf(LocalDateTime.now(Clock.systemUTC()));
+ }
+
+} \ No newline at end of file