|
1 | | -#' log4r appender used not to write messages |
| 1 | +#' Appender used not to write messages |
2 | 2 | #' |
3 | 3 | #' A convenience function written to save time on checking if messages should |
4 | 4 | #' be printed or logs should be written to a file. |
|
12 | 12 | } |
13 | 13 |
|
14 | 14 |
|
| 15 | +#' Format one log line: level, timestamp, message |
| 16 | +#' |
| 17 | +#' Message parts are joined with paste0, never sprintf, so a literal percent |
| 18 | +#' sign is written verbatim. |
| 19 | +#' @keywords internal |
| 20 | +.formatLogMessage = function(level, ...) { |
| 21 | + timestamp = format(Sys.time(), "%Y-%m-%d %H:%M:%S") |
| 22 | + level_field = formatC(level, width = 5L, flag = "-") |
| 23 | + paste0(level_field, " [", timestamp, "] ", paste0(..., collapse = ""), "\n") |
| 24 | +} |
| 25 | + |
| 26 | + |
| 27 | +#' File appender: returns a function(level, ...) that writes one line to a file |
| 28 | +#' @keywords internal |
| 29 | +.fileAppender = function(log_file_path, append = TRUE) { |
| 30 | + force(log_file_path) |
| 31 | + force(append) |
| 32 | + function(level, ...) { |
| 33 | + cat(.formatLogMessage(level, ...), file = log_file_path, sep = "", |
| 34 | + append = append) |
| 35 | + } |
| 36 | +} |
| 37 | + |
| 38 | + |
| 39 | +#' Console appender: returns a function(level, ...) that writes one line to console |
| 40 | +#' @keywords internal |
| 41 | +.consoleAppender = function() { |
| 42 | + function(level, ...) { |
| 43 | + cat(.formatLogMessage(level, ...)) |
| 44 | + } |
| 45 | +} |
| 46 | + |
| 47 | + |
15 | 48 | #' Set default logging object when package is loaded |
16 | 49 | #' @param ... ignored |
17 | | -#' @importFrom log4r file_appender console_appender |
18 | 50 | #' @return none, sets options called MSstatsLog and MSstatsMsg |
19 | 51 | #' @keywords internal |
20 | 52 | .onLoad = function(...) { |
|
24 | 56 | path = paste0("./MSstats_log_", gsub("[ :\\-]", "_", time_now), ".log") |
25 | 57 |
|
26 | 58 | if (is.null(logs)) { |
27 | | - ms_logs = file_appender(path) |
| 59 | + ms_logs = .fileAppender(path) |
28 | 60 | options(MSstatsLog = ms_logs) |
29 | 61 | } |
30 | 62 | if (is.null(msgs)) { |
31 | | - ms_messages = console_appender() |
| 63 | + ms_messages = .consoleAppender() |
32 | 64 | options(MSstatsMsg = ms_messages) |
33 | 65 | } |
34 | 66 | } |
@@ -79,24 +111,23 @@ MSstatsLogsSettings = function(use_log_file = TRUE, append = FALSE, |
79 | 111 |
|
80 | 112 | if (use_log_file) { |
81 | 113 | if (!is.null(log_file_path)) { |
82 | | - file_appender = log4r::file_appender(log_file_path, |
83 | | - append = append) |
| 114 | + file_logger = .fileAppender(log_file_path, append = append) |
84 | 115 | } else { |
85 | 116 | time_now = Sys.time() |
86 | 117 | log_file_path = paste0(base, gsub("[ :\\-]", "_", time_now), |
87 | 118 | ".log") |
88 | | - file_appender = log4r::file_appender(log_file_path) |
| 119 | + file_logger = .fileAppender(log_file_path) |
89 | 120 | } |
90 | 121 | } else { |
91 | | - file_appender = .nullAppender |
| 122 | + file_logger = .nullAppender |
92 | 123 | } |
93 | | - |
| 124 | + |
94 | 125 | if (verbose) { |
95 | | - console_appender = console_appender() |
| 126 | + console_logger = .consoleAppender() |
96 | 127 | } else { |
97 | | - console_appender = .nullAppender |
| 128 | + console_logger = .nullAppender |
98 | 129 | } |
99 | | - loggers = list(file_appender, console_appender) |
| 130 | + loggers = list(file_logger, console_logger) |
100 | 131 | names(loggers) = paste0(pkg_name, c("Log", "Msg")) |
101 | 132 | do.call(options, loggers) |
102 | 133 | invisible(TRUE) |
|
0 commit comments