caption: action-log created: 20201114113318785 modified: 20260105121108063 tags: Widgets ActionWidgets [[Debugging Widgets]] title: ActionLogWidget type: text/vnd.tiddlywiki ! Introduction <<.from-version "5.1.23">> The <<.wid action-log>> widget is an [[action widget|ActionWidgets]] that can be used to output debugging information to the [[JavaScript console|Web Developer Tools]] supported by most browsers. This can be useful to observe and debug the behavior within a sequence of actions. When the action is invoked, the names and values of all [[attributes|Widget Attributes]] are logged to the JavaScript console. ``` <$action-log name=value /> ``` ActionWidgets are used within triggering widgets such as the ButtonWidget. <<.note """ For debugging outside of actions see [[LogWidget]]""">> ! Content and Attributes The <<.wid action-log>> widget is invisible. Any content within it is ignored. <<.from-version "5.4.0">> Any [[multi-valued variables|Multi-Valued Variables]] or attributes are logged as a list of values. |!Attribute |!Description | |<<.attr $$filter>>|(Optional) All variables whose name matches the [[Filter Expression]] will be logged | |<<.attr $$message>> |(Optional) A message to display as the title of the information logged. Useful when several <<.wid action-log>> widgets are used in sequence | |<<.attr $$all>> |(Optional) Set to <<.value yes>> to log all variables | <<.note """ If `<$action-log />` is called without any attributes, all defined variables will be logged as if `$$all=yes` were set.""">> <<.note """When logging [[Variable Attribute Values]], the body text of macros and procedures will be output as their value. Functions are evaluated and their first result is logged.""">> ! Examples !! Basic Example Log the value of variable <<.var name>>, the first result of the filter expression `[tag[Learning]]` and the value of field <<.field created>> of the current tiddler: ``` <$action-log name=<> filter={{{ [tag[Learning]] }}} created={{!!created}} /> ``` !! Example using <<.attr $$filter>> and <<.attr $$message>> Log all core variables (which start with <<.var tv->>) with a table title: ``` <$action-log $$message="Core Variables" $$filter="[prefix[tv-]]" /> ``` !! Widget Debugging Change a misbehaving <<.wlink ActionSetFieldWidget>> widget to an <<.wid action-log>> widget to verify that <<.var currentTiddler>> and <<.var value>> match their expected values: <<.tip """If an action widget is not behaving as expected it is often useful to temporarily change it to an <<.wid action-log>> widget so that the passed attributes can be verified.""">> ``` <$action-log $tiddler=<> $field="text" $value=<> /> ``` This application is the primary reason that the attributes of the <<.wid action-log>> widget are prefixed with two dollar signs instead of one. Otherwise, the attributes of the original widget could be interpreted as attributes to <<.wid action-log>> and lead to unintended consequences. !! Example with Function Log the <<.var tiddlerList>> function definition and its first evaluation result: ``` \function tiddlerList() [tag[Learning]] <$action-log $$filter="[title[tiddlerList]]" value=<> /> ``` <<.note """The values output with the <<.attr $$filter>> or <<.attr $$all>> attributes will only contain the definition of functions instead of their values, as the evaluation of many functions can lead to significant performance penalties.""">>