Làm cách nào để lấy Khối ứng dụng xử lý ngoại lệ (EHAB) để ghi các giá trị từ thuộc tính Exception.Data trong nhật ký?Ngoại lệ. Thiếu thông tin dữ liệu trong EntLib log
try
{
// ...
}
catch (Exception ex)
{
ex.Data.Add("Hello", "World");
throw ex;
}
Ngoại lệ được ghi chính xác nhưng tôi không thể tìm thấy dữ liệu được thêm vào bất kỳ nơi nào trong mục nhập nhật ký được tạo bởi EHAB.
Theo như tôi hiểu, đó là phương pháp được khuyến nghị để thêm thông tin bổ sung có liên quan vào chính ngoại lệ như trong ví dụ trên. Đó là lý do tại sao tôi hơi ngạc nhiên khi EHAB không bao gồm điều này theo mặc định.
Tôi có thể sửa lỗi này bằng cách sửa đổi mẫu với Trình chỉnh sửa mẫu định dạng văn bản EntLib (ảnh chụp màn hình dưới đây) không? Tôi không thể tìm thấy bất kỳ thông tin nào về các "thẻ" khác nhau được cung cấp, nhưng tôi cho rằng câu trả lời được ẩn ở đâu đó với chúng.
Text Formatter Template Editor http://img195.imageshack.us/img195/6614/capturegmg.png
Hoặc làm tôi thực sự cần phải thực hiện riêng tùy chỉnh chữ Formatter của tôi để thực hiện điều này?
EDIT/UPDATE:
Tôi làm điều này trong Global.asax.cs của tôi để tránh phải thêm lời gọi phương thức HandleException ở khắp mọi nơi trong mã của tôi:
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
}
}
}
Hóa ra đây là không phải là giống như điều này (hoạt động tốt và chủ yếu giải quyết được vấn đề của tôi):
try
{
// ...
}
catch (Exception ex)
{
ex.Data.Add("Hello", "World");
bool rethrow = ExceptionPolicy.HandleException(ex, "Log Only Policy");
throw ex;
}
Đi qua tất cả các mã và thêm try-catch's với một cuộc gọi HandleException dường như ... tốt, ngu ngốc. Tôi đoán vấn đề của tôi thực sự là làm thế nào để sử dụng EHAB đúng cách, không phải cấu hình.
Bất kỳ đề xuất nào về cách tôi có thể đúng ghi lại tất cả các ngoại lệ về "mức toàn cầu" trong ứng dụng web ASP.NET ??
Tôi đồng ý với HandleException: là một khuôn khổ, cấu trúc "nếu rethrow" không thực sự mang lại nhiều trừu tượng; bạn vẫn cần phải tiêu mã của bạn với mã "nếu rethrow" trong mỗi khối catch. –