Class LogNode
- java.lang.Object
-
- io.github.lukehutch.fastclasspathscanner.utils.LogNode
-
public class LogNode extends Object
A tree-structured threadsafe log that allows you to add log entries in arbitrary order, and have the output retain a sane order. The order may also be made deterministic by specifying a sort key for log entries.
-
-
Field Summary
Fields Modifier and Type Field Description static boolean
LOG_IN_REALTIME
If this is set to true, log entries are output in realtime, as well as added to the LogNode tree.
-
Constructor Summary
Constructors Constructor Description LogNode()
Create a toplevel log node.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addElapsedTime()
Call this once the work corresponding with a given log entry has completed if you want to show the time taken after the log entry.void
flush()
Flush out the log to stderr, and clear the log contents.LogNode
log(String msg)
Add a log entry.LogNode
log(String msg, long elapsedTimeNanos)
Add a log entry.LogNode
log(String msg, long elapsedTimeNanos, Throwable e)
Add a log entry.LogNode
log(String sortKey, String msg)
Add a log entry with sort key for deterministic ordering.LogNode
log(String sortKey, String msg, long elapsedTimeNanos)
Add a log entry with sort key for deterministic ordering.LogNode
log(String sortKey, String msg, long elapsedTimeNanos, Throwable e)
Add a log entry with sort key for deterministic ordering.LogNode
log(String sortKey, String msg, Throwable e)
Add a log entry with sort key for deterministic ordering.LogNode
log(String msg, Throwable e)
Add a log entry.LogNode
log(Throwable e)
Add a log entry.LogNode
log(List<String> msgs)
Add a series of log entries.String
toString()
Build the log output.
-
-
-
Field Detail
-
LOG_IN_REALTIME
public static boolean LOG_IN_REALTIME
If this is set to true, log entries are output in realtime, as well as added to the LogNode tree. This can help debug situations where log info is never shown, e.g. deadlocks, or where you need to show the log info right up to the point where you hit a breakpoint.
-
-
Method Detail
-
toString
public String toString()
Build the log output. Call this on the toplevel log node.
-
addElapsedTime
public void addElapsedTime()
Call this once the work corresponding with a given log entry has completed if you want to show the time taken after the log entry.
-
log
public LogNode log(String sortKey, String msg, long elapsedTimeNanos, Throwable e)
Add a log entry with sort key for deterministic ordering.- Returns:
- a child log node, which can be used to add sub-entries.
-
log
public LogNode log(String sortKey, String msg, long elapsedTimeNanos)
Add a log entry with sort key for deterministic ordering.- Returns:
- a child log node, which can be used to add sub-entries.
-
log
public LogNode log(String sortKey, String msg, Throwable e)
Add a log entry with sort key for deterministic ordering.- Returns:
- a child log node, which can be used to add sub-entries.
-
log
public LogNode log(String sortKey, String msg)
Add a log entry with sort key for deterministic ordering.- Returns:
- a child log node, which can be used to add sub-entries.
-
log
public LogNode log(String msg, long elapsedTimeNanos, Throwable e)
Add a log entry.- Returns:
- a child log node, which can be used to add sub-entries.
-
log
public LogNode log(String msg, long elapsedTimeNanos)
Add a log entry.- Returns:
- a child log node, which can be used to add sub-entries.
-
log
public LogNode log(String msg, Throwable e)
Add a log entry.- Returns:
- a child log node, which can be used to add sub-entries.
-
log
public LogNode log(String msg)
Add a log entry.- Returns:
- a child log node, which can be used to add sub-entries.
-
log
public LogNode log(List<String> msgs)
Add a series of log entries. Returns the last LogNode created.- Returns:
- the last log node created, which can be used to add sub-entries.
-
log
public LogNode log(Throwable e)
Add a log entry.- Returns:
- a child log node, which can be used to add sub-entries.
-
flush
public void flush()
Flush out the log to stderr, and clear the log contents. Only call this on the toplevel log node, when threads do not have access to references of internal log nodes so that they cannot add more log entries inside the tree, otherwise log entries may be lost.
-
-