ILogger log = GetLoggerFromSomeWhere();
Consider the code above.
In the output to the underlying log framework, the exception.ToString() (containing Exception message + stacktrace) is appended to your own message, which IMO is unintuitive, unexpected and completely unnecessary behaviour. I know I can override this with my own messageformatter-Func, but that's unnecessary clutter scattered in my own code just because of the default value.
When decompiling, it seems that it defaults to LoggerExtensions.StateAndExceptionMessageFormatter , where I think it should default to LoggerExtensions.StringMessageFormatter.
I don't know if this is intentional, or should be considered a bug. To me, since logging frameworks (and log4net is the default one anyways) generally know about the concept exceptions, it should be unnecessary to manually append the exception.ToString() since that's included in a separate field. Or, if it should really be general enough to let everything end up in one string in the end, at least let me configure the defaults somehow, so I don't need to clutter my code with a messageFormatter every time I call .Error with an exception.