Explicit Logging
The syntax of an explicit logging expression is:
<expr>.klog(<message>)where <expr> is any valid KRL expression. The expression is returned, and something like the following is added to the console log (and the "Logging" tab of the UI if enabled):
[KLOG] <message> <expr converted to a string>The syntax of an explicit logging statement in the postlude is:
log <level> <expr> where <level> is one of info, warn, error, or debug; and <expr> is any valid KRL expression that results in a string (or something that can be cast as a string such as a number). Explicit logging statements also place the log message in the console log, and the "Logging" tab of the UI if enabled.
The following example would place a string with the value of a variable named query in the log if the rule fired:
fired { log debug "query:"+query }
The following would only log with an empty query:
fired { log debug "Empty query" if(query like "^$") }The following rule is selected when an http:post() event is seen with a status code indicating an error. The error is logged and then processing is stopped.
rule r3 is active {
select when http post label re#ex# status_code re#([45]\d\d)# setting (status)
noop();
fired {
log error <<Error: #{status}: #{event:attr("status_line")}>>
last;
}
} Another approach to logging would use explicit error handling.
Copyright Picolabs | Licensed under Creative Commons.