diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2019-03-26 17:55:47 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2019-03-26 18:40:11 +0100 |
commit | fd922d96996239a5462f4532b868875a55a0d068 (patch) | |
tree | 254d5a8f2cbafe719a1c634e8fc4091a11327bef /vespalog/src/main | |
parent | e73dcf4a2fc8e819824a8a0035c220f2f4dd4e47 (diff) |
Expose timestamp of type 'Instant' in LogMessage
Diffstat (limited to 'vespalog/src/main')
-rw-r--r-- | vespalog/src/main/java/com/yahoo/log/LogMessage.java | 34 | ||||
-rw-r--r-- | vespalog/src/main/java/com/yahoo/log/LogMessageTimeComparator.java | 4 |
2 files changed, 24 insertions, 14 deletions
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()); } } |