<Feat>: Add universal NLog diagnostics and improve AppDiagnostic UI
Cause: - Live diagnostics required logging from multiple applications without blocking TBF. - Shared nlog.config files caused configuration conflicts. - The original viewer lacked configurable colors and practical log controls. - Inconsistent diagnostic deployment caused log transfer failures and locked shared DLLs during builds. Solution: 1. Added universal diagnostic transport - Added AppDiagnostic.Logging with an NLog target and named-pipe communication. - Added background buffering and automatic reconnection. - Registered the diagnostic connector programmatically. 2. Separated diagnostic window lifecycle - Run AppDiagnostic as an independent process. - Activate the existing window on repeated launches. - Keep TBF running when the diagnostic window closes. 3. Corrected diagnostic deployment - Copy the complete diagnostic output into a dedicated AppDiagnostic subdirectory during build. - Overwrite existing deployment files to prevent inconsistent versions. - Validate and launch the executable from that subdirectory with an explicit working directory. 4. Improved the log viewer - Added configurable substring colors with a palette and live preview. - Added text, level and application filters. - Added line wrapping, clipboard actions and log export. - Added Pause/Resume, Refresh, Clear, auto-scroll and Always on top. - Added connection and log counters. - Persist color rules between sessions. 5. Removed legacy dependencies - Replaced LiveLogCache with structured diagnostic storage. - Removed AppDiagnostic dependencies on log4net and SharedComponents. Validation: - Confirmed successful log transfer when launching AppDiagnostic from TBF.
This commit is contained in:
+14
-1
@@ -1,9 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
internalLogLevel="Trace"
|
||||
internalLogFile="${basedir}/nlog-internal.log"
|
||||
throwConfigExceptions="true">
|
||||
|
||||
<extensions>
|
||||
<add assembly="Xylem.Common.Utils.Logging" />
|
||||
<add assembly="AppDiagnostic.Logging" />
|
||||
</extensions>
|
||||
|
||||
<targets>
|
||||
@@ -11,6 +15,14 @@
|
||||
xsi:type="UiTarget"
|
||||
layout="${time}|${level:uppercase=true:padding=-5}|${message}" />
|
||||
|
||||
<target name="appDiagnostic"
|
||||
xsi:type="AppDiagnostic"
|
||||
pipeName="Sensus.AppDiagnostic.LogPipe"
|
||||
queueLimit="10000"
|
||||
reconnectDelayMilliseconds="500"
|
||||
connectTimeoutMilliseconds="250"
|
||||
layout="${message}" />
|
||||
|
||||
<target name="logfile"
|
||||
xsi:type="File"
|
||||
fileName="${basedir}/GenesisCordonelInterfaceLogger.log"
|
||||
@@ -18,6 +30,7 @@
|
||||
</targets>
|
||||
|
||||
<rules>
|
||||
<logger name="*" minlevel="Trace" writeTo="appDiagnostic" />
|
||||
<logger name="GenesisCordonelInterface*" minlevel="Trace" writeTo="uiTrace" />
|
||||
<logger name="GenesisCordonelInterface*" minlevel="Trace" writeTo="logfile" />
|
||||
</rules>
|
||||
|
||||
Reference in New Issue
Block a user