Als ik de standaardlay-out gebruik met NLog, wordt alleen de naam van de uitzondering afgedrukt.
Mij is verteld dat de log4jxmlvent-lay-out niets over de uitzondering afdrukt.
Welke lay-out zal me helpen?
Voorbeeldcode:
try
{
throw new SystemException();
}
catch (Exception ex)
{
logger.Error("oi", ex);
}
Standaard uitvoer opmaak:
2011-01-14 09:14:48.0343|ERROR|ConsoleApplication.Program|oi
log4jxmlvent-uitvoer:
<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>
Antwoord 1, autoriteit 100%
Ik moest die van de Logger.
+ Level + Exception
methoden gebruiken:
logger.ErrorException("ex", ex);
en een aangepaste lay-out
layout="${exception:format=ToString,StackTrace}${newline}"
Antwoord 2, autoriteit 22%
Zoals gedocumenteerd in Uitzonderingen loggen, te beginnen met NLog 4.0, geef de uitzondering als de eerste parameter voor Error
, bijvoorbeeld als volgt:
logger.Error(ex, "Nickers!");
In de NLLog-configuratie (bijv. in web.config
of app.config
), neem je ${exception:format=tostring}
op in de lay-out, bijvoorbeeld als volgt:
<target name="f" type="File" layout="${longdate} ${message} ${exception:format=tostring}"/>
Antwoord 3, autoriteit 22%
Gebruik de overbelastingen die een Uitzondering nemen als het tweede argument:
catch(Exception crap)
{
log.Error(crap, "Something went horribly wrong.");
}
Neem dan in uw lay-out de lay-outrenderer ${exception}
op:
<target ...
layout="${longdate} ${message} ${exception:format=ToString}" />
Bronnen:
- https://github.com/NLog/NLog/wiki /How-to-Log-uitzonderingen
- https://github.com/nlog/NLog/wiki/Exception -Layout-Renderer
Antwoord 4, autoriteit 10%
Vanaf NLog 4.5 kunt u nu gebruik maken van:
logger.Error(exception, message);
en indeling als volgt:
"${longdate} ${level} ${message} ${exception:[email protected]}"
De @
betekent dat alle Exception-eigenschappen worden geserialiseerd in Json-formaat