简体   繁体   中英

Logging InnerException using Log4Net

How do I log inner exception with Log4NET?

This is my current conversion pattern:

<conversionPattern value="%date [%appdomain] %-5level %logger [%property{NDC}] - %message%newline" />

Console and File Appenders automatically print the exception. The exception: message, stack trace, and all inner exceptions (again with stack trace) are logged on separate lines and do not follow the conversion pattern.

I am not even sure if you could configure log4net not to print it.

Update: It is possible to configure the appender to not print the stacktrace: Log4Net - Logging out the Exception stacktrace only for certain files

%exception

a formatted form of the exception object in the log entry, if the entry contains an exception; otherwise, this format expression adds nothing to the log entry

Reference: http://www.beefycode.com/post/Log4Net-Tutorial-pt-4-Layouts-and-Patterns.aspx

I believe your exception would contain the inner exception:

Edit: use the ILog.Error() method instead of ILog.ErrorFormat(). As per documentation , ErrorFormat() does not take an Exception object to include in the log event

Just managed to verify this in the sourcecode for Log4Net version 2.0 and I can see there is no consideration for logging InnerException. That is the current limitation of Log4Net (version 2) that it does not support rendering of InnerException out of the box. That's why you would start using NLog as it has builtin support for InnerException rendering - link

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM