I'm back on this project and still struggling. I've spent HOURS trying to figure this out. Perhaps I'm going about this all wrong, I don't know. I'd be appreciative if someone could tell me if I'm off base here, or what. Goal: I want to record the entire exception (stack trace is the mother load, of course) in my database. I'm using a stored proc to insert the event and that sproc has a Details parameter which is XML. What I've tried: I've been able to specify a pattern that has the required XML wrapper nodes (and no actual insertions from log4net) and that makes it into the db. This is the format that I need to adhere to support the dashboard that we use to monitor for problems. <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="<DETAILS> <EXCEPTION></EXCEPTION> </DETAILS>" /> </layout>
So this simply inserts: <DETAILS> <EXCEPTION /> </DETAILS> Next step, I tried to insert the exception itself by include "%exception" in the above pattern at the appropriate place. I'm breakpointing on virtual protected void SendBuffer(IDbTransaction dbTran, LoggingEvent[] events) just before it attempts to execute the command. The exception is not being escaped. It contains <> in the stacktrace, which blow up the XML. There may be other characters in there as well, but hopefully the solution will resolve everything. I tried the ExceptionLayout pattern. It doesn't escape the stacktrack. I tried the above pattern with the XmlLayout and, even though I didn't embed any field patterns, still got the exception, but wrapped in <log4net:event> nodes. The inner text was still not escaped, and thus failed. So am I missing something obvious? Has anyone ever logged exceptions using an XML data type? Thank you for any guidance! ________________________________ From: Stefan Bodewig <bode...@apache.org> To: Log4NET User <log4net-user@logging.apache.org> Sent: Friday, October 21, 2011 6:20 AM Subject: Re: Did the exception format change from XML -> string in 1.2.11? On 2011-10-19, Todd wrote: > I grabbed the latest version and now I can't log any exceptions, > APPARENTLY because the format changed. My sproc expects the xml > payload, but I now seem to be getting a formatted string. The > stacktrace in the string can contain "<>", which causes the call to > the sproc to fail. (it's expecting xml data, but only sees xml > brackets inside) The actual formatting happens via the IRawLayout in AdoNetAppender (this is what I assume you are using). What does you configuration for this look like? I quickly glanced over the code changes in AdoNetAppender and the related layout and converter classes but don't see any change that would explain your findings. Of course I may be missing something. Stefan