LogEvent is a single unit of data that should be logged.
usually created by a Logger, and then processed by one more Appenders.
They do not need to be instantiated manually except for testing and
experimentation; however, if you plan on writing your own Appenders or
Layouts you need to understand LogEvents.
integer. The log_level / priority of the LogEvent. Use the
level_name to get the
POSIXct. The time when then the
LogEvent was created.
character. The name of the calling function.
character. The log message.
list. All values stored in the
all custom fields, but not including
character scalar. The name of the Logger that
created this event, equivalent to
The arguments to
LogEvent$new() directly translate to the fields stored
LogEvent. Usually these values will be scalars, but (except for
"logger") they can also be vectors if they are all of the same length (or
scalars that will be recycled). In this case the event will be treated by
the Appenders and Layouts as if several separate events.
LogEvent$new( logger, level = 400, timestamp = Sys.time(), caller = NA, msg = NA, ... )
logger, level, timestamp, caller, msg
see Public fields.
All named arguments in
... will be added to the LogEvent
as custom fields. You can store arbitrary R objects in LogEvents
this way, but not all Appenders will support them. See AppenderJson for
The objects of this class are cloneable with this method.
LogEvent$clone(deep = FALSE)
Whether to make a deep clone.
lg <- get_logger("test") lg$error("foo bar")#> ERROR [08:07:54.948] foo bar# The last LogEvent produced by a Logger is stored in its `last_event` field lg$last_event # formatted console output#> ERROR [2021-09-16 08:07:54] foo barlg$last_event$values # values stored in the event#> $level #>  200 #> #> $timestamp #>  "2021-09-16 08:07:54 UTC" #> #> $logger #>  "test" #> #> $caller #>  "eval" #> #> $msg #>  "foo bar" #># Also contains the Logger that created it as .logger lg$last_event$logger#>  "test"# equivalent to lg$last_event$.logger$name#>  "test"# This is really a reference to the complete Logger, so the following is # possible (though nonsensical) lg$last_event$.logger$last_event$msg#>  "foo bar"identical(lg, lg$last_event$.logger)#>  TRUElg$config(NULL) # reset logger config#> <Logger> [info] test #> #> inherited appenders: #> console: <AppenderConsole> [all] -> console