Echo expression or a file
Usage
echo(
expr,
log = echo_get_log(),
msg = echo_get_msg(),
level = echo_get_level(),
file = NULL
)
Arguments
- expr
Expression to evaluate; should be written with curly braces (see examples)
- log
A connection or file name for outputs; defaults to
stdout()
- msg
Logical, if
FALSE
does not output a message; defaults toTRUE
- level
Sets the echo level (see details); defaults to
0L
- file
File path to evaluate (like
base::source()
). Iffile
is notNULL
, thenexpr
must be missing`
Details
Levels of output can be controlled with level
:
0
EXP
: logs expressions that were evaluated1
OUT
: logs outputs from expressions2
MSG
: logs messages3
WRN
: logs warnings4
ERR
: logs errors
When set, all outputs at the level
or below are run. Errors are always
logged as they will interrupt and stop the program.
Timestamps are printed in UTC by default. To control this, set the option
value, such as options(echo.timezone = "EST")
.
Examples
# make sure to use braces for expr
echo(letters, level = 0) # bad
echo({letters}, level = 0) # good
#> [2023-05-26 13:11:13] [EXP] letters
try(echo(
expr = {
print(1 + 1)
Sys.sleep(2)
head(mtcars)
message(1)
warning(2)
stop(3)
},
level = 0
))
#> [2023-05-26 13:11:13] [EXP] print(1 + 1)
#> [2023-05-26 13:11:13] [OUT] #> [1] 2
#> [2023-05-26 13:11:13] [EXP] Sys.sleep(2)
#> [2023-05-26 13:11:15] [EXP] head(mtcars)
#> [2023-05-26 13:11:15] [EXP] message(1)
#> [2023-05-26 13:11:15] [MSG] #> 1
#> [2023-05-26 13:11:15] [EXP] warning(2)
#> [2023-05-26 13:11:15] [WRN] #> 2
#> [2023-05-26 13:11:15] [EXP] stop(3)
#> [2023-05-26 13:11:15] [ERR] #> 3
#> Error : Error in stop(3)
#> 3
# Parse lines in a file instead
try(echo(file = system.file("example-script.R", package = "echo")))
#> [2023-05-26 13:11:17] [MSG] #> 1
#> [2023-05-26 13:11:17] [WRN] #> 2
#> [2023-05-26 13:11:17] [ERR] #> 3
#> Error : Error in stop(3)
#> 3
# Note that
x <- c("example for", "writing lines")
echo({
x
print(x)
writeLines(x)
}, level = 0)
#> [2023-05-26 13:11:17] [EXP] x
#> [2023-05-26 13:11:17] [ERR] #> object 'x' not found
#> Error: Error in x
#> object 'x' not found