2014-04-24 3 views
2

Je exception du journal de problème seul message est enregistré.Nlog erreur (message, exception) ignorer exception

config NLog:

<target name="logfile" 
     xsi:type="File" 
     fileName="log.txt" 
     layout="${longdate} | ${machinename} | ${processid} | ${processname} | ${level} | ${logger} | |${message} | ${exception:format=tostring}" /> 



<logger name="*" 
     minlevel="Info" 
     writeTo="logfile" /> 

Utilisation:

private static Logger _logger = LogManager.GetCurrentClassLogger(); 

    _logger.Error("my message", new Exception("my exception")); 

sortie du journal:

2014-04-24 18:17:29.0841 | PC_NAME | 6464 | APP_NAME.vshost | Error | AppName.ViewModel | my message | 

Exception est ignorer.

J'ai trouvé quelques thread mais pour moi fonctionne pas.

Répondre

1

Nlog utilise des méthodes sepecial pour les exceptions d'exploitation qui utilisent le <loglevel>Exception schéma d'appellation.

Donc, dans votre cas, vous devez utiliser la méthode ErrorException pour vos exceptions se correctement enregistrés:

private static Logger _logger = LogManager.GetCurrentClassLogger(); 

_logger.ErrorException("my message", new Exception("my exception")); 
+0

méthode de ErrorException de NLog a désapprouvée. –

0

En fait, void Error(string message, Exception exception); est obsolète

Vous pouvez utiliser ILogger.Error(Exception, string) méthode comme ci-dessous

catch (Exception e) 
{ 
Log.Error(e, "it happens"); 
} 

et un peu mise en page modifiée bits avec ${onexception}. Cela va vérifier est-il une exception à être connecté

<target name="logfile" 
     xsi:type="File" 
     fileName="log.txt" 
     layout="${longdate} | ${machinename} | ${processid} | ${processname} | ${level} | ${logger} | |${message} ${onexception:| ${exception:format=tostring}}" /> 

/>

Questions connexes