Diagnostics
Stable event codes and categories, level gating before construction, and why diagnostics never contain payload bytes, keys or credentials.
One method to receive everything#
public interface IPersistenceLogger
{
void Log(PersistenceEvent persistenceEvent);
}Every subsystem reports through PersistenceDiagnostics, which pairs your logger with the session clock and applies the configured minimum level before an event object is constructed. Filtering early is what keeps verbose diagnostics from costing frames.
options.Diagnostics.MinimumLogLevel = PersistenceLogLevel.Information;Stable codes, not prose#
PersistenceEventCode values are stable strings (NF.PERSIST.STORAGE.NOT_FOUND, NF.PERSIST.LIFECYCLE.INIT_REJECTED, …), grouped by PersistenceEventCategory. Quote the code in a report: it is usually enough to identify the problem without a screenshot of a stack trace.
Nothing sensitive is ever logged#
The Editor uses the same format#
The Inspector's validation panel, the Validation page, the Save Browser and the identity scanner all render findings with the same shape — what happened, why it matters, how to fix it — because there is one diagnostics system rather than a runtime one and an Editor one that disagree.
Next#
- Validation — the Editor side of the same format.
- Error codes — the codes, grouped by subsystem.
- Support — what to include in a report.
Something wrong on this page? Every page here describes behaviour that is checked in the repository. If a page and the package disagree, the package wins.
Report a documentation problem · Frequently asked questions · Troubleshooting