summaryrefslogtreecommitdiffstats
path: root/vespalog
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2019-03-26 17:55:47 +0100
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2019-03-26 18:40:11 +0100
commitfd922d96996239a5462f4532b868875a55a0d068 (patch)
tree254d5a8f2cbafe719a1c634e8fc4091a11327bef /vespalog
parente73dcf4a2fc8e819824a8a0035c220f2f4dd4e47 (diff)
Expose timestamp of type 'Instant' in LogMessage
Diffstat (limited to 'vespalog')
-rw-r--r--vespalog/abi-spec.json3
-rw-r--r--vespalog/src/main/java/com/yahoo/log/LogMessage.java34
-rw-r--r--vespalog/src/main/java/com/yahoo/log/LogMessageTimeComparator.java4
3 files changed, 26 insertions, 15 deletions
diff --git a/vespalog/abi-spec.json b/vespalog/abi-spec.json
index 3a8d1c8fd49..d0811437978 100644
--- a/vespalog/abi-spec.json
+++ b/vespalog/abi-spec.json
@@ -118,6 +118,7 @@
"public"
],
"methods": [
+ "public java.time.Instant getTimestamp()",
"public long getTime()",
"public long getTimeInSeconds()",
"public java.lang.String getHost()",
@@ -551,4 +552,4 @@
],
"fields": []
}
-} \ No newline at end of file
+}
diff --git a/vespalog/src/main/java/com/yahoo/log/LogMessage.java b/vespalog/src/main/java/com/yahoo/log/LogMessage.java
index 3a675d843bd..7e77b70ae9a 100644
--- a/vespalog/src/main/java/com/yahoo/log/LogMessage.java
+++ b/vespalog/src/main/java/com/yahoo/log/LogMessage.java
@@ -4,6 +4,7 @@ package com.yahoo.log;
import com.yahoo.log.event.Event;
import com.yahoo.log.event.MalformedEventException;
+import java.time.Instant;
import java.util.OptionalLong;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -32,8 +33,7 @@ public class LogMessage
"(.+)$" // payload
);
- private long time;
- private String timeStr;
+ private Instant time;
private String host;
private long processId;
private long threadId;
@@ -47,11 +47,10 @@ public class LogMessage
* Private constructor. Log messages should never be instantiated
* directly; only as the result of a static factory method.
*/
- private LogMessage (String timeStr, Long time, String host, long processId, long threadId,
+ private LogMessage (Instant time, String host, long processId, long threadId,
String service, String component, Level level,
String payload)
{
- this.timeStr = timeStr;
this.time = time;
this.host = host;
this.processId = processId;
@@ -62,8 +61,17 @@ public class LogMessage
this.payload = payload;
}
- public long getTime () {return time;}
- public long getTimeInSeconds () {return time / 1000;}
+ public Instant getTimestamp() {return time;}
+ /**
+ * @deprecated Use {@link #getTimestamp()}
+ */
+ @Deprecated(since = "7", forRemoval = true)
+ public long getTime () {return time.toEpochMilli();}
+ /**
+ * @deprecated Use {@link #getTimestamp()}
+ */
+ @Deprecated(since = "7", forRemoval = true)
+ public long getTimeInSeconds () {return time.getEpochSecond();}
public String getHost () {return host;}
public long getProcessId() {return processId;}
public OptionalLong getThreadId() {return threadId != -1 ? OptionalLong.of(threadId) : OptionalLong.empty();}
@@ -94,19 +102,20 @@ public class LogMessage
}
Level msgLevel = LogLevel.parse(m.group(6));
- Long timestamp = parseTimestamp(m.group(1));
+ Instant timestamp = parseTimestamp(m.group(1));
String threadProcess = m.group(3);
- return new LogMessage(m.group(1), timestamp, m.group(2), parseProcessId(threadProcess), parseThreadId(threadProcess),
+ return new LogMessage(timestamp, m.group(2), parseProcessId(threadProcess), parseThreadId(threadProcess),
m.group(4), m.group(5), msgLevel,
m.group(7));
}
- private static long parseTimestamp(String timeStr) throws InvalidLogFormatException {
+ private static Instant parseTimestamp(String timeStr) throws InvalidLogFormatException {
try {
- return (long) (Double.parseDouble(timeStr) * 1000);
+ long nanoseconds = (long) (Double.parseDouble(timeStr) * 1_000_000_000L);
+ return Instant.ofEpochSecond(0, nanoseconds);
} catch (NumberFormatException e) {
- throw new InvalidLogFormatException("Invalid time string:" + timeStr);
+ throw new InvalidLogFormatException("Invalid time string: " + timeStr);
}
}
@@ -143,7 +152,7 @@ public class LogMessage
if ((level == LogLevel.EVENT) && (event == null)) {
try {
event = Event.parse(getPayload());
- event.setTime(time);
+ event.setTime(time.toEpochMilli());
}
catch (MalformedEventException e) {
log.log(LogLevel.DEBUG, "Got malformed event: " + getPayload());
@@ -158,6 +167,7 @@ public class LogMessage
*/
public String toString () {
String threadProcess = VespaFormat.formatThreadProcess(processId, threadId);
+ String timeStr = VespaFormat.formatTime(time);
return new StringBuilder(timeStr.length()
+ host.length()
+ threadProcess.length()
diff --git a/vespalog/src/main/java/com/yahoo/log/LogMessageTimeComparator.java b/vespalog/src/main/java/com/yahoo/log/LogMessageTimeComparator.java
index 15aeb347a9b..469f808546f 100644
--- a/vespalog/src/main/java/com/yahoo/log/LogMessageTimeComparator.java
+++ b/vespalog/src/main/java/com/yahoo/log/LogMessageTimeComparator.java
@@ -39,7 +39,7 @@ public class LogMessageTimeComparator implements Comparator<LogMessage>, Seriali
public int compare(LogMessage message1, LogMessage message2) {
return ascending ?
- Long.valueOf(message1.getTime()).compareTo(Long.valueOf(message2.getTime()))
- : Long.valueOf(message2.getTime()).compareTo(Long.valueOf(message1.getTime()));
+ message1.getTimestamp().compareTo(message2.getTimestamp())
+ : message2.getTimestamp().compareTo(message1.getTimestamp());
}
}