1 package com.github.triceo.splitlog.api;
2
3 import java.util.Date;
4 import java.util.List;
5
6 /**
7 * A set of lines from the watched file, that is likely to constitute a single
8 * log message. No two messages are allowed to be equal, unless they have the
9 * same {@link #getUniqueId()}.
10 */
11 public interface Message {
12
13 /**
14 * Get the date that this message was logged on.
15 *
16 * @return Newly constructed instance of {@link Date} with the message log
17 * timestamp.
18 */
19 Date getDate();
20
21 /**
22 * Get data about exception included in this message.
23 *
24 * @return Exception data, if {@link #hasException()} returns true. Null in
25 * any other case.
26 */
27 ExceptionDescriptor getExceptionDescriptor();
28
29 /**
30 * Get each line of the message.
31 *
32 * @return Unmodifiable representation of lines in this message, exactly as
33 * were received.
34 */
35 List<String> getLines();
36
37 /**
38 * Get each line of the message, with metadata stripped out.
39 *
40 * @return Unmodifiable representation of text of the message.
41 */
42 List<String> getLinesWithoutMetadata();
43
44 /**
45 * Will return the name of the logger that was used to write the log
46 * message.
47 *
48 * @return Empty string if none found.
49 */
50 String getLogger();
51
52 /**
53 * Return a message that preceded this one in the same log stream.
54 *
55 * @return Null if there was no such message, the message already got GC'd,
56 * or <code>{@link #getType()} == {@link MessageType#TAG}</code>.
57 */
58 Message getPreviousMessage();
59
60 MessageSeverity getSeverity();
61
62 MessageType getType();
63
64 /**
65 * Unique ID of the message, that can be used to compare messages in the
66 * order of their arrival into this tool.
67 *
68 * @return ID of the message, guaranteed to be unique for every message, and
69 * increasing from message to message.
70 */
71 long getUniqueId();
72
73 boolean hasException();
74
75 }