R/getx_setx.R

SetLogLevel <- function(level="INFO") {
    stopifnot(level %in% c("INFO", "WARN", "STOP"))
    assign("loglevel", level, envir=.rloggingOptions)
}

GetLogLevel <-function() {
    get("loglevel", envir=.rloggingOptions)
}

SetTimeStampFormat <- function(ts.format="[%Y-%m-%d %H:%M:%S]") {
  assign("ts.format", ts.format, envir=.rloggingOptions)
}

GetTimeStampFormat <- function() {
  get("ts.format", envir=.rloggingOptions)
}

SetFilenameSuffixes <- function(file.name.suffixes=list(INFO="message",
                                                        WARN="warning",
                                                        STOP="stop")) {
    # Check that a list of length=3 is passed to this function:
    if (!is.list(file.name.suffixes) | length(file.name.suffixes) != 3) {
        stop("argument file.name.suffixes must must be a list of length=3.")
    }

    # Check if the list of suffixes contains INFO, WARN, and STOP. If not,
    # Return a message indicating the missing elements of file.name.suffixes
    missing.elements <- setdiff(c("INFO", "WARN", "STOP"),
        names(file.name.suffixes))

    if (length(missing.elements)) {
        stop("argument file.name.suffixes is missing element(s): ",
          paste(missing.elements, sep="", collapse=", "))
    }

    assign("file.name.suffixes", file.name.suffixes, envir=.rloggingOptions)
}

GetFilenameSuffixes <- function() {
    get("file.name.suffixes", envir=.rloggingOptions)
}

SetLogFile <- function(base.file="rlogging.log", folder=getwd(),
                       split.files=FALSE) {
    assign("split.files", split.files, envir=.rloggingOptions)

    if (is.null(base.file)) {
        assign("logfile.base", NULL, envir=.rloggingOptions)
    } else {
        assign("logfile.base", file.path(folder, base.file),
          envir=.rloggingOptions)
    }
}

GetLogFile <- function(level) {
    base.file <- get("logfile.base", envir=.rloggingOptions)
    split.files <- get("split.files", envir=.rloggingOptions)
    if (!missing(level)) {
        if (!split.files) {
            warning("level=", level, "provided to GetLogFile(), but log files
              are not split. Ignoring parameter.")
            base.file
        } else {
            file.name.suffix <- get(level, GetFilenameSuffixes())
            replacement <- paste("\\1", "_", file.name.suffix, "\\2", sep="")
            sub("(.+?)(\\.[^.]*$|$)", replacement, base.file)
        }
    } else {
        if (split.files) {
            stop("log files are split, but no level parameter provided to
              GetLogFile().")
        } else {
          base.file
        }
    }
}
mjkallen/rlogging documentation built on May 23, 2019, 1:04 a.m.