I use the NLog logging framework and try to get exception and stacktrace information displayed in any UDP logger application, such as Sentinel and Log2Console , but can only display part of the log message. File output works well, since most examples do just that, so the problem is with using network targets using NLog.
Bonus if custom format can be applied to internal exceptions and stacktrace, but this is not required. Exception.ToString () will go a long way.
Note on code example: With Log2Console I found articles on how to send an exception as a separate log entry. Although this worked, I was not happy with the solution.
Example exception registration code:
Logger Log = LogManager.GetCurrentClassLogger(); try { throw new InvalidOperationException("My ex", new FileNotFoundException("My inner ex1", new AccessViolationException("Innermost ex"))); } catch (Exception e) { Log.ErrorException("TEST", e); }
Example NLog.config:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <targets async="true"> <target name="network" xsi:type="NLogViewer" address="udp://192.168.1.3:9999" layout="${message}${onexception:inner=${newline}${exception:format=tostring}}" /> <target name="network2" xsi:type="Chainsaw" address="udp://192.168.1.3:9998" appinfo="Grocelist"/> <target name="network2ex" xsi:type="Network" address="udp4://192.168.1.3:9998" layout="${exception:format=ToString}" /> <target name="logfile" xsi:type="File" layout="${longdate}|${level:uppercase=true}|${logger}|${message}|${exception:format=tostring}" createDirs="true" fileName="${basedir}/logs/${shortdate}.log" /> </targets> <rules> <logger name="*" minlevel="Debug" writeTo="logfile" /> <logger name="*" minlevel="Debug" writeTo="network" /> <logger name="*" minlevel="Debug" writeTo="network2" /> <logger name="*" minlevel="Warn" writeTo="network2ex" /> </rules> </nlog>
Some links:
Edit: After searching a little more, this seems to be a limit to the end of NLog. A recent patch seems to exist: log4jxmlevent does not display Exception
Edit2: I restored NLog with the patch, but it did not seem to help in the Sentinel or Log2Console applications. I may have to try log4net to make sure that these applications really support what I'm trying to achieve.
Edit3: I am currently using string.Format () to join and format the message and the exception text. It works well, but I'm not looking here.
angularsen
source share