Comment obtenir la trace de la stack lors de l’enregistrement des exceptions avec NLog?

Lorsque j’utilise la mise en page par défaut avec NLog, elle imprime uniquement le nom de l’exception. On m’a dit que la mise en page log4jxmlevent n’imprime rien sur l’exception. Quelle mise en page va m’aider?

Exemple de code:

try { throw new SystemException(); } catch (Exception ex) { logger.Error("oi", ex); } 

Sortie de mise en page par défaut:

 2011-01-14 09:14:48.0343|ERROR|ConsoleApplication.Program|oi 

sortie log4jxmlevent:

  oi   3      

J’ai dû utiliser celui du Logger. + Niveau + méthodes d’ Exception :

 logger.ErrorException("ex", ex); 

et une mise en page personnalisée

 layout="${exception:format=ToSsortingng,StackTrace}${newline}" 

Utilisez les surcharges qui prennent une exception comme deuxième argument:

 catch(Exception crap) { log.Error("Something went horribly wrong.", crap); } 

Ensuite, dans votre mise en page, incluez le moteur de rendu ${exception} :

  

Sources:

Comme indiqué dans Comment consigner les exceptions , en commençant par NLog 4.0, transmettez l’exception en tant que premier paramètre à Error , par exemple, comme ceci:

 logger.Error(ex, "Nickers!"); 

Dans la configuration NLog (par exemple dans web.config ou app.config ), incluez ${exception:format=tossortingng} dans la présentation, par exemple comme ceci: