2012-04-17 1 views
1

Я написал пользовательский наблюдатель MongoDB с Entlib 5.0 в качестве моего обработчика исключений в своем веб-приложении. Он отлично работает для того, что он создает запись документа для каждой «строки» ниже, в том числе пустых строк, за исключением:Enterprise Library 5.0 Обработчик исключений: как удалить разделы из сообщения об ошибке

---------------------------------------- 
Timestamp: 4/17/2012 4:13:50 PM 
Message: HandlingInstanceID: c3c5f58a-89b3-4b64-b05d-3f72f998bab4 
An exception of type 'System.NullReferenceException' occurred and was caught. 
----------------------------------------------------------------------------- 
04/17/2012 16:13:50 
Type : System.NullReferenceException, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 
Message : Object reference not set to an instance of an object. 
Source : MyCo.Webservices.TheCoolService 
Data : System.Collections.ListDictionaryInternal 
TargetSite : System.String TestExceptionHandling() 
Stack Trace : at Logging.TestExceptionHandling() in C:\tfs\Development\Source\MyCo.Webservices.TheCoolService\Logging\Logging.cs:line 55 


---------------------------------------- 

То, что я хотел бы сделать, это бросить большую часть этой информации в один документ так, как не иметь 10 разных документов для одной и той же ошибки. Даже написав свой собственный Exception formattter (http://msdn.microsoft.com/en-us/library/ff664587(v=pandp.50).aspx) Я все еще не могу обойти несколько вызовов метода customlistener.Write(), каждый из которых создает новый документ в моей коллекции mongodb.

Мой опыт работы с Entlib ограничен, но я не вижу, как обойти его, если я не напишу весь ExceptionFormatter с нуля. У кого-нибудь есть идеи, как обойти это?

ответ

1

Нашел мою проблему. Оказывается, что у меня отсутствовала реализация метода TraceData() на моем слушателе. Как только я сказал, что делать там, он обрабатывал сообщение об ошибке как один вызов WriteLine().