Может быть, это иллюстрирует общую идею
library(futile.logger)
f <- function() {
for (i in 1:10) {
tryCatch({
if (i %% 3 == 0)
stop("my bad")
## normal behavior
flog.info("i = %d", i)
}, error = function(e) {
## error behavior
flog.error("oops, i = %d: %s", i, conditionMessage(e))
})
}
}
производство вывода
> f()
INFO [2018-10-25 15:50:05] i = 1
INFO [2018-10-25 15:50:05] i = 2
ERROR [2018-10-25 15:50:05] oops, i = 3: my bad
INFO [2018-10-25 15:50:05] i = 4
INFO [2018-10-25 15:50:05] i = 5
ERROR [2018-10-25 15:50:05] oops, i = 6: my bad
INFO [2018-10-25 15:50:05] i = 7
INFO [2018-10-25 15:50:05] i = 8
ERROR [2018-10-25 15:50:05] oops, i = 9: my bad
INFO [2018-10-25 15:50:05] i = 10
Использование функций futile.logger для добавления в файл, а не на консоль, и для записи только ошибок
fl <- tempfile()
flog.appender(appender.file(fl))
flog.threshold(ERROR)
f()
результат
> readLines(fl)
[1] "ERROR [2018-10-26 06:28:37] oops, i = 3: my bad"
[2] "ERROR [2018-10-26 06:28:37] oops, i = 6: my bad"
[3] "ERROR [2018-10-26 06:28:37] oops, i = 9: my bad"