Package org.plumelib.bcelutil
Class SimpleLog
- java.lang.Object
-
- org.plumelib.bcelutil.SimpleLog
-
public final class SimpleLog extends Object
A logging class with the following features:- Can be enabled and disabled (when disabled, all operations are no-ops),
- Can indent/exdent log output,
- Writes to a file or to standard output, and
- Can provide a stack trace.
-
-
Field Summary
Fields Modifier and Type Field Description booleanenabledIf false, do no output.private @Nullable StringfilenameThe file for logging output.private StringINDENT_STR_ONE_LEVELIndentation string for one level of indentation.private intindentLevelThe current indentation level.private @Nullable StringindentStringCache for the current indentation string, or null if needs to be recomputed.private List<String>indentStringsCache of indentation strings that have been computed so far.private @MonotonicNonNull PrintStreamlogfileWhere to write logging output.
-
Constructor Summary
Constructors Constructor Description SimpleLog()Create a new SimpleLog object with logging to standard out enabled.SimpleLog(boolean enabled)Create a new SimpleLog object with logging to standard out.SimpleLog(@Nullable String filename)Create a new SimpleLog object with logging to a file enabled.SimpleLog(@Nullable String filename, boolean enabled)Create a new SimpleLog object with logging to a file.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanenabled()Return whether logging is enabled.voidexdent()Decreases indentation by one level.private StringgetIndentString()Return the current indentation string.voidindent()Increases indentation by one level.voidlog(String format, @Nullable Object... args)Log a message.voidlogStackTrace()Print a stack trace to the log.voidresetIndent()Resets indentation to none.private voidsetLogfile()Set the private field logfile, based on the private fieldfilename.
-
-
-
Field Detail
-
enabled
public boolean enabled
If false, do no output.
-
logfile
private @MonotonicNonNull PrintStream logfile
Where to write logging output. Null if nothing has been output yet.
-
filename
private @Nullable String filename
The file for logging output. If null, System.out is used.
-
indentLevel
private int indentLevel
The current indentation level.
-
INDENT_STR_ONE_LEVEL
private final String INDENT_STR_ONE_LEVEL
Indentation string for one level of indentation.- See Also:
- Constant Field Values
-
indentString
private @Nullable String indentString
Cache for the current indentation string, or null if needs to be recomputed. Never access this directly; always callgetIndentString().
-
-
Constructor Detail
-
SimpleLog
public SimpleLog()
Create a new SimpleLog object with logging to standard out enabled.
-
SimpleLog
public SimpleLog(boolean enabled)
Create a new SimpleLog object with logging to standard out.- Parameters:
enabled- whether the logger starts out enabled
-
SimpleLog
public SimpleLog(@Nullable String filename)
Create a new SimpleLog object with logging to a file enabled.- Parameters:
filename- file name, or use "-" or null for System.out
-
SimpleLog
public SimpleLog(@Nullable String filename, boolean enabled)
Create a new SimpleLog object with logging to a file.- Parameters:
filename- file name, or use "-" or null for System.outenabled- whether the logger starts out enabled
-
-
Method Detail
-
enabled
public boolean enabled()
Return whether logging is enabled.- Returns:
- whether logging is enabled
-
setLogfile
@EnsuresNonNull("logfile") private void setLogfile()Set the private field logfile, based on the private fieldfilename.This creates the file if it does not exist. This should be called lazily, when output is performed. Otherwise, it would be annoying to create a zero-size logfile if no output is ever written.
-
log
@FormatMethod public void log(String format, @Nullable Object... args)
Log a message. The message is prepended with the current indentation string. The indentation is only applied at the start of the message, not for every line break within the message.- Parameters:
format- format string for messageargs- values to be substituted into format
-
logStackTrace
public void logStackTrace()
Print a stack trace to the log.
-
getIndentString
private String getIndentString()
Return the current indentation string.- Returns:
- the current indentation string
-
indent
public void indent()
Increases indentation by one level.
-
exdent
public void exdent()
Decreases indentation by one level.
-
resetIndent
public void resetIndent()
Resets indentation to none. Has no effect if logging is disabled.
-
-