Files
tbf/AppDiagnostic.Logging
marekf 2660c564a6 <Feat>: Expose Genesis preadjustment results in Results and improve result mapping
Cause:

- Preadjustment values were not available for persistent Results mapping.
- Older Genesis item IDs could resolve to different result variables.
- Meter-specific variables were difficult to find.

Solution:

1. Added preadjustment result storage
   - Store common execution metadata and available phase-specific values per slot and test.
   - Expose temperature comparison and Completion values in Results.
   - Preserve existing measurement execution, timing, parallelism and STOP handling.

2. Improved result selection
   - Add Water meter type under the existing Category tab.
   - Group available items into Common, Genesis and iPerl.

3. Corrected saved mappings
   - Migrate recognized legacy Genesis mappings.
   - Store stable item identifiers while preserving existing numeric IDs.
   - Mark ambiguous mappings as Review mapping.
   - Preserve the one-based Genesis repetition number.
2026-09-14 22:48:10 +02:00
..

AppDiagnostic.Logging

Reusable NLog target for sending structured diagnostic events from multiple .NET Framework processes to AppDiagnostic.exe through a local named pipe.

Producer integration

Reference this project from the producer application and add the extension and target to its NLog configuration:

<extensions>
  <add assembly="AppDiagnostic.Logging" />
</extensions>

<targets>
  <target name="appDiagnostic"
          xsi:type="AppDiagnostic"
          layout="${message}" />
</targets>

<rules>
  <logger name="*" minlevel="Trace" writeTo="appDiagnostic" />
</rules>

The target writes to a bounded background queue. Producer threads are not blocked while the diagnostic viewer is unavailable. Queued messages are sent after the viewer becomes available; new messages are discarded when the queue limit is reached.

The receiver can read messages with:

DiagnosticLogEntry entry =
    DiagnosticMessageSerializer.ReadFramed(namedPipeServerStream);