Capturing/Logging Failed Bindings (without script transforms/binding only) in Perspective

In production, we have an intermittent issue of bindings failing. The binding in question uses a parameter passed to the popup to build a tagpath for reference in an expression tag binding.

In this screenshot, I am replicating this failure in a very simple test screen. tagPath is not being correctly passed into this view. A binding on a label dependent on that tagPath fails because the tagPath is invalid. A red overlay and hoverable error are generated.

It would be much easier for us to fix these issues if this was logged anywhere, but currently, our only report/record of these failed bindings is reports from operators. To us, it appears that this error only exists within a single Perspective session at the time of its viewing and then is completely lost on refresh/reevaluation.

We thought of putting a script transform on the binding. However, given that our program is widely distributed, and using a script transform for a single instance of logging when this issue is happening across multiple popups and locations seems very high maintenance, we were wondering if there was a more efficient way of monitoring non-script, non-query failures on these script bindings.

  1. Is there any way/where this failure is logged in Ignition, without having to change anything? (Can we currently check something in Ignition to find this issue from a short time ago?)
  2. If this is not currently logged, what is the minimum "work" we would have to do to enable this logging/record of failure for future reference? Is there any way we could log this for all binding failures?

Thanks

Alter the troublesome expressions nest within my Integration Toolkit's debugMe() expression function. Use the MDC key parameter to help you pick out the results in Ignition's logging infra.

But note that you cannot trap the quality problems of a tag binding--those are not exceptions, but simply bad quality. For that, you want to use the qualityOf() function in a separate property. Perhaps with overlay opt-out in the tag binding.