Watch for a log of something.
logwatch(
what,
get_status,
get_log,
show_log = TRUE,
skip = 0,
show_spinner = TRUE,
poll = 1,
timeout = Inf,
status_waiting = "waiting",
status_running = "running",
status_timeout = "timeout",
status_interrupt = "interrupt",
multiple = FALSE
)
Very short summary of the process underlying the logs. Examples include "task", "installation", etc.
Function that will fetch a status. Accepts no
arguments, and returns one of a set of (by default) "waiting",
"running" or any status you like after that. When status is
"waiting" we show a spinner but do not stream logs. When
"running" we stream logs (but don't show a spinner). Any other
statement returns. You can change the expected "waiting" or
"running" status values with the status_waiting
and
status_running
arguments.
A callback to read logs of the installation
(something like function() readLines(filename, warn = FALSE)
may be sufficient), or NULL
if log fetching is not possible.
Logical, indicating if the installation log should be printed.
Optional integer indicating how to handle log content
that exists at the point where we start watching. The default
(0) shows all log contents. A positive integer skips that many
lines, while a negative integer shows only that many lines (so
-5 shows the first five lines in the log). You can pass Inf
to discard all previous logs, but stream all new ones.
Logical, indicating if a spinner should be
shown while waiting for the task to start, and if show_log
is
FALSE
for the task to complete.
Time, in seconds, used to throttle calls to the status function. The default is 1 second
Timeout, in seconds, after which we give up. This
does not cancel the underlying process being watched! We return
status_timeout
after a timeout (by default "timeout").
The value of a waiting status (can be a vector of possible statuses)
The value of a running status (can be a vector of possible statuses)
The value to return if we timeout
The value to return if we are interrupted
Logical, indicating if get_status()
is expected
to return multiple values. This changes the progress printing
slightly by disabling the logging (even if get_log
is provided
and show_log = TRUE
, logs are never fetched or shown), and
there is no longer a distinction between waiting for things to
start vs complete. Instead, we print a summary of things in the
waiting, running and finished states.
A list with elements:
status: Your final status call
start: The start time
end: The end time