Class Output
- All Implemented Interfaces:
Serializable
Outputs and logs system messages, errors, and other various items printed as a result of a run.
Output maintains zero or more logs, which contain Writers which write out stuff. Each log has an associated verbosity; if request is made to write text to a log, and the text's maximal verbosity is lower than the verbosity of the log, the log will not write it. Each Output instance also has an instance-level global verbosity; incoming requests to write text are additionally subject to this verbosity test. Lastly, the Output class itself has a global verbosity as well. This last verbosity is useful for shutting down writing to all logs in the entire system in a simple way.
When the system fails for some reason and must be started back up from a checkpoint, Output's log files may be overwritten. Output offers three approaches here. First, Output can clear the log file and overwrite it. Second, Output can append to the existing log file; because checkpoints are only done occasionally, this may result in duplicate outputs to a file, so keep this in mind. Third, Output can keep certain written text, typically announcements, in memory; this text gets written out into the checkpoint file, and so it is sound.
There are several kinds of announcements, in different levels of importance.
- FATAL ERRORs. These errors cause the system to exit(1) immediately.
- Simple ERRORs. These errors set the "errors" flag to true; at the end of a stream of simple errors, the system in general is expected to exit with a fatal error due to the flag being set. That's the protocol anyway. On restart from a checkpoint, if there were any simple errors, the system ends with a fatal error automatically.
- WARNINGs. These errors do not cause the system to exit under any circumstances.
- MESSAGEs. Useful facts printed out for the benefit of the user.
- SYSTEM MESSAGEs. Useful system-level facts printed out for the benefit of the user.
Output will also store all announcements in memory by default so as to reproduce them if it's restarted from a checkpoint. You can change this behavior also by
- See Also:
-
Nested Class Summary
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
static final int
When passed to print functions, doesn't do any printingstatic final int
Don't print warnings, messages, or simple errorsstatic final int
The standard verbosity to use if you don't want common reporting (like statistics)static final int
Don't print messagesstatic final int
Don't print warnings or messagesstatic final int
No verbosity at all, not even system messages or fatal errorsstatic final int
Total verbosity -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionint
addLog
(int descriptor, boolean postAnnouncements) Creates a new log and adds it to Output.int
addLog
(int descriptor, int _verbosity, boolean postAnnouncements) Creates a new log of minimal verbosity verbosity and adds it to Output.int
Adds the given log to Output.int
Creates a new log and adds it to Output.int
Creates a new log and adds it to Output.int
Creates a new log and adds it to Output.int
Creates a new log of minimal verbosity verbosity and adds it to Output.int
Creates a new log of minimal verbosity verbosity and adds it to Output.int
addLog
(Writer writer, LogRestarter restarter, boolean postAnnouncements, boolean repostAnnouncements) Creates a new log and adds it to Output.int
addLog
(Writer writer, LogRestarter restarter, int _verbosity, boolean postAnnouncements, boolean repostAnnouncements) Creates a new log of minimal verbosity verbosity and adds it to Output.void
Clears out announcements.void
Clears the error flag.void
close()
Closes the logs -- ONLY call this if you are preparing to quitvoid
Posts a simple error.void
Posts a simple error.void
Posts a simple error.void
Exits with a fatal error if the error flag has been raised.void
Posts a fatal error.void
Posts a fatal error.void
Posts a fatal error.void
flush()
Flushes the logsboolean
getFlush()
getLog
(int x) Returns the given log.boolean
getStore()
boolean
int
Returns the Output object's general verbositystatic void
initialError
(String s, boolean throwsErrors) Prints an initial error to System.err.static void
initialError
(String s, Parameter p1, boolean throwsErrors) Prints an initial error to System.err.static void
initialError
(String s, Parameter p1, Parameter p2, boolean throwsErrors) Prints an initial error to System.err.static void
Prints an initial message to System.err.static void
Prints an initial warning to System.err.static void
initialWarning
(String s, Parameter p1) Prints an initial warning to System.err.static void
initialWarning
(String s, Parameter p1, Parameter p2) Prints an initial warning to System.err.static InputStream
Returns a compressing input stream using JZLib (http://www.jcraft.com/jzlib/).static OutputStream
Returns a compressing output stream using JZLib (http://www.jcraft.com/jzlib/).void
Posts a message.int
numLogs()
Returns the number of logs currently posted.void
Prints a non-announcement message to a given log.void
Prints a non-announcement message to the given logs, with a certain verbosity.void
Prints a non-announcement message to a given log, with a certain verbosity.void
Prints a non-announcement message to the given logs, with a certain verbosity.protected void
Prints a non-announcement message to a given log, with a certain verbosity.void
Prints a non-announcement message to the given logs, with a verbosity of V_NO_GENERAL.void
Prints a message to a given log.void
Prints a non-announcement message to the given logs, with a certain verbosity.void
Prints a non-announcement message to the given logs, with a certain verbosity.removeLog
(int x) Removes the given log.void
reopen
(int _log) Forces a file-based log to reopen, erasing its previous contents.void
reopen
(int[] _logs) Forces one or more file-based logs to reopen, erasing their previous contents.void
restart()
void
setFilePrefix
(String filePrefix) void
setFlush
(boolean v) Sets whether the Output flushes its announcements.void
setStore
(boolean v) Sets whether the Output stores its announcements.void
setThrowsErrors
(boolean val) void
setVerbosity
(int v) Sets the Output object's general verbosity to v.void
Posts a system message.void
Posts a warning.void
Posts a warning.void
Posts a warning.void
Posts a warning one time only.void
void
-
Field Details
-
V_VERBOSE
public static final int V_VERBOSETotal verbosity- See Also:
-
V_NO_MESSAGES
public static final int V_NO_MESSAGESDon't print messages- See Also:
-
V_NO_WARNINGS
public static final int V_NO_WARNINGSDon't print warnings or messages- See Also:
-
V_NO_GENERAL
public static final int V_NO_GENERALThe standard verbosity to use if you don't want common reporting (like statistics)- See Also:
-
V_NO_ERRORS
public static final int V_NO_ERRORSDon't print warnings, messages, or simple errors- See Also:
-
V_TOTALLY_SILENT
public static final int V_TOTALLY_SILENTNo verbosity at all, not even system messages or fatal errors- See Also:
-
ALL_MESSAGE_LOGS
public static final int ALL_MESSAGE_LOGS- See Also:
-
NO_LOGS
public static final int NO_LOGSWhen passed to print functions, doesn't do any printing- See Also:
-
-
Constructor Details
-
Output
public Output(boolean storeAnnouncementsInMemory, int _verbosity) Creates a new, verbose, empty Output object. -
Output
public Output(boolean storeAnnouncementsInMemory) Creates a new, verbose, empty Output object.
-
-
Method Details
-
setFilePrefix
-
setThrowsErrors
public void setThrowsErrors(boolean val) -
getThrowsErrors
public boolean getThrowsErrors() -
close
public void close()Closes the logs -- ONLY call this if you are preparing to quit -
flush
public void flush()Flushes the logs -
setFlush
public void setFlush(boolean v) Sets whether the Output flushes its announcements. -
getFlush
public boolean getFlush() -
setStore
public void setStore(boolean v) Sets whether the Output stores its announcements. -
getStore
public boolean getStore() -
setVerbosity
public void setVerbosity(int v) Sets the Output object's general verbosity to v. -
getVerbosity
public int getVerbosity()Returns the Output object's general verbosity -
addLog
public int addLog(File file, int _verbosity, boolean postAnnouncements, boolean appendOnRestart, boolean gzip) throws IOException Creates a new log of minimal verbosity verbosity and adds it to Output. This log will write to the file file, and may or may not post announcements to the log. If the log must be reset upon restarting from a checkpoint, it will append to the file or erase the file and start over depending on appendOnRestart. If appendOnRestart is false and postAnnouncements is true, then this log will repost all the announcements on restarting from a checkpoint. Returns the position of the log in Output's collection of logs -- you should use this to access the log always; never store the log itself, which may go away upon a system restart. The log can be compressed with gzip, but you cannot appendOnRestart and compress at the same time.- Throws:
IOException
-
addLog
public int addLog(File file, int _verbosity, boolean postAnnouncements, boolean appendOnRestart) throws IOException Creates a new log of minimal verbosity verbosity and adds it to Output. This log will write to the file file, and may or may not post announcements to the log. If the log must be reset upon restarting from a checkpoint, it will append to the file or erase the file and start over depending on appendOnRestart. If appendOnRestart is false and postAnnouncements is true, then this log will repost all the announcements on restarting from a checkpoint. Returns the position of the log in Output's collection of logs -- you should use this to access the log always; never store the log itself, which may go away upon a system restart.- Throws:
IOException
-
addLog
public int addLog(File file, boolean postAnnouncements, boolean appendOnRestart, boolean gzip) throws IOException Creates a new log and adds it to Output. This log will write to the file file, and may or may not post announcements to the log. If the log must be reset upon restarting from a checkpoint, it will append to the file or erase the file and start over depending on appendOnRestart. If appendOnRestart is false and postAnnouncements is true, then this log will repost all the announcements on restarting from a checkpoint. Returns the position of the log in Output's collection of logs -- you should use this to access the log always; never store the log itself, which may go away upon a system restart. The log can be compressed with gzip, but you cannot appendOnRestart and compress at the same time.- Throws:
IOException
-
addLog
Creates a new log and adds it to Output. This log will write to the file file, and you may not post announcements to the log. If the log must be reset upon restarting from a checkpoint, it will append to the file or erase the file and start over depending on appendOnRestart. Returns the position of the log in Output's collection of logs -- you should use this to access the log always; never store the log itself, which may go away upon a system restart. The log can be compressed with gzip, but you cannot appendOnRestart and compress at the same time.- Throws:
IOException
-
addLog
Creates a new log and adds it to Output. This log will write to the file file, and you may not post announcements to the log. If the log must be reset upon restarting from a checkpoint, it will append to the file or erase the file and start over depending on appendOnRestart. Returns the position of the log in Output's collection of logs -- you should use this to access the log always; never store the log itself, which may go away upon a system restart.- Throws:
IOException
-
addLog
public int addLog(int descriptor, int _verbosity, boolean postAnnouncements) Creates a new log of minimal verbosity verbosity and adds it to Output. This log will write to stdout (descriptor == Log.D_STDOUT) or stderr (descriptor == Log.D_STDERR), and may or may not post announcements to the log. Returns the position of the log in Output's collection of logs -- you should use this to access the log always; never store the log itself, which may go away upon a system restart. -
addLog
public int addLog(int descriptor, boolean postAnnouncements) Creates a new log and adds it to Output. This log will write to stdout (descriptor == Log.D_STDOUT) or stderr (descriptor == Log.D_STDERR), and may or may not post announcements to the log. Returns the position of the log in Output's collection of logs -- you should use this to access the log always; never store the log itself, which may go away upon a system restart. -
addLog
public int addLog(Writer writer, LogRestarter restarter, int _verbosity, boolean postAnnouncements, boolean repostAnnouncements) Creates a new log of minimal verbosity verbosity and adds it to Output. This log may or may not post announcements to the log, and if it does, it additionally may or may not repost all of its announcements to the log upon a restart. The log writes to writer, which is reset upon system restart by restarter. Returns the position of the log in Output's collection of logs -- you should use this to access the log always; never store the log itself, which may go away upon a system restart. -
addLog
public int addLog(Writer writer, LogRestarter restarter, boolean postAnnouncements, boolean repostAnnouncements) Creates a new log and adds it to Output. This log may or may not post announcements to the log, and if it does, it additionally may or may not repost all of its announcements to the log upon a restart. The log writes to writer, which is reset upon system restart by restarter. Returns the position of the log in Output's collection of logs -- you should use this to access the log always; never store the log itself, which may go away upon a system restart. -
addLog
Adds the given log to Output. In general you shouldn't use this method unless you really really need something custom. Returns the position of the log in Output's collection of logs -- you should use this to access the log always; never store the log itself, which may go away upon a system restart. -
numLogs
public int numLogs()Returns the number of logs currently posted. -
getLog
Returns the given log. -
removeLog
Removes the given log. -
initialWarning
Prints an initial warning to System.err. This is only to be used by ec.Evolve in starting up the system. -
initialWarning
Prints an initial warning to System.err. This is only to be used by ec.Evolve in starting up the system. -
initialWarning
Prints an initial warning to System.err. This is only to be used by ec.Evolve in starting up the system. -
initialError
Prints an initial error to System.err. This is only to be used by ec.Evolve in starting up the system. -
initialError
Prints an initial error to System.err. This is only to be used by ec.Evolve in starting up the system. -
initialError
Prints an initial error to System.err. This is only to be used by ec.Evolve in starting up the system. -
initialMessage
Prints an initial message to System.err. This is only to be used by ec.Evolve in starting up the system. These messages are not logged. -
systemMessage
Posts a system message. -
fatal
Posts a fatal error. This causes the system to exit. -
fatal
Posts a fatal error. This causes the system to exit. -
fatal
Posts a fatal error. This causes the system to exit. -
error
Posts a simple error. This causes the error flag to be raised as well. -
error
Posts a simple error. This causes the error flag to be raised as well. -
error
Posts a simple error. This causes the error flag to be raised as well. -
warning
Posts a warning. -
warning
Posts a warning. -
warning
Posts a warning. -
warnOnce
Posts a warning one time only. -
warnOnce
-
warnOnce
-
message
Posts a message. -
reopen
Forces a file-based log to reopen, erasing its previous contents. non-file logs ignore this.- Throws:
IOException
-
reopen
Forces one or more file-based logs to reopen, erasing their previous contents. non-file logs ignore this.- Throws:
IOException
-
println
Prints a message to a given log. If log==ALL_MESSAGE_LOGS, posted to all logs which accept announcements. If the log is NO_LOGS, nothing is printed.- Throws:
OutputException
-
println
Prints a non-announcement message to the given logs, with a certain verbosity. If a log is NO_LOGS, nothing is printed to that log.- Throws:
OutputException
-
println
Prints a non-announcement message to the given logs, with a certain verbosity. If the log is NO_LOGS, nothing is printed.- Throws:
OutputException
-
println
Prints a non-announcement message to the given logs, with a verbosity of V_NO_GENERAL. If the log is NO_LOGS, nothing is printed.- Throws:
OutputException
-
print
Prints a non-announcement message to a given log, with a certain verbosity. No '\n' is printed. If the log is null, nothing is printed.- Throws:
OutputException
-
print
Prints a non-announcement message to a given log, with a certain verbosity. If log==ALL_MESSAGE_LOGS, posted to all logs which accept announcements. No '\n' is printed. If the log is NO_LOGS, nothing is printed.- Throws:
OutputException
-
print
Prints a non-announcement message to a given log. If log==ALL_MESSAGE_LOGS, posted to all logs which accept announcements. No '\n' is printed. If the log is NO_LOGS, nothing is printed.- Throws:
OutputException
-
print
Prints a non-announcement message to the given logs, with a certain verbosity. No '\n' is printed. If a log is NO_LOGS, nothing is printed to that log.- Throws:
OutputException
-
print
Prints a non-announcement message to the given logs, with a certain verbosity. No '\n' is printed. If a log is NO_LOGS, nothing is printed to that log.- Throws:
OutputException
-
exitIfErrors
public void exitIfErrors()Exits with a fatal error if the error flag has been raised. -
clearErrors
public void clearErrors()Clears the error flag. -
clearAnnouncements
public void clearAnnouncements()Clears out announcements. Note that this will cause these announcements to be unavailable for reposting after a restart! -
restart
- Throws:
IOException
-
makeCompressingInputStream
Returns a compressing input stream using JZLib (http://www.jcraft.com/jzlib/). If JZLib is not available on your system, this method will return null. -
makeCompressingOutputStream
Returns a compressing output stream using JZLib (http://www.jcraft.com/jzlib/). If JZLib is not available on your system, this method will return null.
-