Good logging allows package developers and users to create log files at
different levels to track and debug lengthy or complex calculations.
"Python-style" logging is intended to suggest that users should set up
multiple log files for different log severities so that the errorLog
will contain only log messages at or above the ERROR
level while a
debugLog
will contain log messages at the DEBUG
level as well
as all higher levels.
Python-style log files are set up with logger.setup()
. Logs can be set
up for any combination of log levels. Accepting the default NULL
setting for any log file simply means that log file will not be created.
Python-style logging requires the use of logger.debug()
style logging
statements as seen in the example below.
logger.setup(
traceLog = NULL,
debugLog = NULL,
infoLog = NULL,
warnLog = NULL,
errorLog = NULL,
fatalLog = NULL
)
File name or full path where logger.trace()
messages
will be sent.
File name or full path where logger.debug()
messages
will be sent.
File name or full path where logger.info()
messages
will be sent.
File name or full path where logger.warn()
messages
will be sent.
File name or full path where logger.error()
messages
will be sent.
File name or full path where logger.fatal()
messages
will be sent.
No return value.
All functionality is built on top of the excellent futile.logger package.
if (FALSE) {
library(MazamaCoreUtils)
# Only save three log files
logger.setup(
debugLog = "debug.log",
infoLog = "info.log",
errorLog = "error.log"
)
# But allow lot statements at all levels within the code
logger.trace("trace statement #%d", 1)
logger.debug("debug statement")
logger.info("info statement %s %s", "with", "arguments")
logger.warn("warn statement %s", "about to try something dumb")
result <- try(1/"a", silent=TRUE)
logger.error("error message: %s", geterrmessage())
logger.fatal("fatal statement %s", "THE END")
}