2011-01-13 13 views
44

Varsayılan düzeni NLog ile kullandığımda, yalnızca istisnanın adını yazdırır. Log4jxmlevent düzeninin istisna hakkında hiçbir şey yazdırılmadığı söylendi. Hangi düzen bana yardımcı olur?NLog ile istisnaları günlüğe kaydederken Yığın izini nasıl alabilirim?

örnek kod:

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

Standart düzen çıkışı:

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

log4jxmlevent çıkışı:

<log4j:event logger="ConsoleApplication.Program" 
      level="ERROR" 
      timestamp="1295003776872" 
      thread="9"> 
<log4j:message>oi</log4j:message> 
<log4j:NDC /> 
<log4j:locationInfo class="ConsoleApplication.Program" 
        method="Void Main(System.String[])" 
        file="C:\Users\User\Documents\Visual Studio 2010\Projects\ConsoleApplication\ConsoleApplication\Program.cs" 
        line="21" /> 
<nlog:eventSequenceNumber>3</nlog:eventSequenceNumber> 
<nlog:locationInfo assembly="ConsoleApplication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> 
<log4j:properties> 
    <log4j:data name="log4japp" 
       value="true" /> 
    <log4j:data name="log4jmachinename" 
       value="MACHINE" /> 
</log4j:properties> 

cevap

80

Ben Logger. + L birini kullanmak zorunda kaldı evel + Exception yöntem:

logger.ErrorException("ex", ex); 

ve özel bir düzen

layout="${exception:format=ToString,StackTrace}${newline}" 
+4

bu varolan düzeni ilave olarak mı: web.config veya app.config) 'de, böyle örneğin düzeninde ${exception:format=tostring} içerir? – Shane

+0

@Shane kesinlikle, –

+8

FYI yığın izine ihtiyacınız olmadıkça, bu yaklaşım kullanımdan kaldırılmıştır. https://github.com/NLog/NLog/wiki/How-to-Log-Exceptions – Clay

14

kullanın ikinci argüman olarak bir özel durum almak aşırı yükler: Sonra

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

mizanpajınızda ${exception} düzeni dahil oluşturucu:

<target ... 
    layout="${longdate} ${message} ${exception:format=ToString}" /> 

Kaynaklar:

12

böyle örneğin Error ilk parametre olarak durum geçiş:

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

NLog yapılandırmasında (ör.

<target name="f" type="File" layout="${longdate} ${message} ${exception:format=tostring}"/> 
+1

[Koşullu Biçimlendirme] 'yi (http://nlog-project.org/2011/04/20/exception-logging-enhancements.html) istisnalar için düzende kullanabilir . Aşağıdaki, varsayılan düzene yakındır: <'. – mcdon

İlgili konular