Exception.Data özelliğinin değerlerini günlüğe yazmak için Exception Handling Application Block'u (EHAB) nasıl alabilirim?Exception.Data bilgileri EntLib günlüğünde yok
try
{
// ...
}
catch (Exception ex)
{
ex.Data.Add("Hello", "World");
throw ex;
}
istisna doğru kaydedilir ama ben bir yere Ehab tarafından oluşturulan günlük girişinde eklenen verileri bulmak mümkün değil.
Anladığım kadarıyla, yukarıdaki örnekte olduğu gibi istisna ile ilgili ek bilgileri eklemek önerilen bir uygulamadır. İşte bu yüzden EHAB'ın bunu varsayılan olarak içermediğine biraz şaşırdım.
Şablonu, EntLib Text Formatter Şablon Düzenleyicisi ile değiştirerek (aşağıdaki ekran görüntüsü) bu sorunu giderebilir miyim? Sağlanan çeşitli "jetonlar" hakkında hiçbir bilgi bulamıyorum, ama cevabın onlarla bir yerlerde saklı olduğunu farz ediyorum.
Text Formatter Template Editor http://img195.imageshack.us/img195/6614/capturegmg.png
Ya ben gerçekten bunu gerçekleştirmek için kendi özel Metin Formatter uygulaması gerekir mi?
DÜZENLEME/GÜNCELLEME: benim kodunda her yerde HandleException yöntemi çağrısı eklemek zorunda kalmamak için benim Global.asax.cs bunu
:
using EntLib = Microsoft.Practices.EnterpriseLibrary;
using System;
namespace MyApp
{
public class Global : System.Web.HttpApplication
{
protected void Application_Error(object sender, EventArgs e)
{
// I have an "All Exceptions" policy in place...
EntLib.ExceptionHandling.ExceptionPolicy.HandleException(Server.GetLastError(), "All Exceptions");
// I believe it's the GetLastError that's somehow returning a "lessor" exception
}
}
}
Bu çıkıyor bu aynı değil olduğunu (iyi çalışır ki, ve esasen benim sorunu çözer):
try
{
// ...
}
catch (Exception ex)
{
ex.Data.Add("Hello", "World");
bool rethrow = ExceptionPolicy.HandleException(ex, "Log Only Policy");
throw ex;
}
Tüm kodun içinden geçiyor ve bir catchException çağrısı ile try-catch'lar eklemek sadece ... iyi, aptalca görünüyor. Sanırım problemim, 'un EHAB'yi doğru şekilde nasıl yapılandırılacağıdır.
'u düzgün bir şekilde nasıl yapabilirim Herhangi bir öneri, bir ASP.NET web uygulamasında "genel düzeyde" tüm istisnaları günlüğe kaydeder ??
HandleException ile aynı fikirdeyim: bir çerçeve olarak, "eğer" eğer "eğer", "tasarım", gerçekten çok fazla soyutlama sunmuyor; Her catch bloğundaki "eğer" rehine "kodu" ile kodunuzu silmeniz gerekir. –