Como registrar exceções com destinos de rede no NLog

Estou usando o NLog logging framework e estou tentando obter informações de exceção e de rastreamento de pilha que aparecem em qualquer aplicativo de logger UDP, comoSentinel e Log2Console, mas só pode exibir a parte da mensagem de log. A saída para um arquivo funciona bem, como a maioria dos exemplos faz exatamente isso, então o problema gira em torno do uso de destinos de rede com o NLo

Bonus se um formato personalizado puder ser aplicado em exceções internas e no rastreamento de pilha, mas isso não é necessário. Exception.ToString () percorreu um longo caminho.

Nota no código de exemplo: Com Log2Console Encontrei umartig sobre como enviar a exceção como uma entrada de log separada. Embora isso tenha funcionado, eu não estava feliz com a soluçã

Exemplo do código de log de exceção:

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);
}

Exemplo NLog.config:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<targets async="true">

    <!-- Send by UDP to Sentinel with NLogViewer protocol -->
    <target name="network" xsi:type="NLogViewer" address="udp://192.168.1.3:9999" layout="${message}${onexception:inner=${newline}${exception:format=tostring}}" />

    <!-- Send message by UDP to Log2Console with Chainsaw protocol -->
    <target name="network2" xsi:type="Chainsaw" address="udp://192.168.1.3:9998" appinfo="Grocelist"/>

    <!-- Send exception/stacktrace by UDP to Log2Console with generic network protocol -->
    <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>

Alguns links:

http: //nlog-project.orhttp: //nlog-project.org/wiki/Targethttp: //nlog-project.org/wiki/Exception_layout_renderehttp: //nlog-project.org/2011/04/20/exception-logging-enhancements.htmhttp: //nlog-project.org/wiki/How_to_properly_log_exceptions%3Como dizer ao NLog para registrar exceções?https: //stackoverflow.com/a/9684111/13476http: //nlog-forum.1685105.n2.nabble.com/How-to-send-stacktrace-of-exceptions-to-Chainsaw-or-Log2Console-td5465045.htm

Editar Depois de pesquisar um pouco mais, isso parece ser uma limitação no final do NLog. Aparentemente, um patch recente está disponível: log4jxmlevent não processa Exception

Edit2: Reconstruí o NLog com o patch, mas ele não pareceu ajudar nos aplicativos Sentinel ou Log2Console. Talvez eu precise tentar o log4net para garantir que esses aplicativos realmente suportem o que estou tentando alcança

Edit3: Atualmente, uso string.Format () para ingressar e formatar a mensagem e o texto de exceção. Isso funciona bem, mas não é o que estou procurando aqu

questionAnswers(12)

yourAnswerToTheQuestion