اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
یک دقیقه
در مورد ELMAH پیشتر مطالبی در این سایت منتشر شده است:
از آن میتوان جهت ثبت استثناهای مدیریت نشده در انواع و اقسام برنامههای وب دات نتی استفاده کرد. از برنامههای ASP.NET Webforms ، ASP.NET MVC تا سرویسهای WCF ، WCF RIA و غیره. سپس این Http module ویژه امکان مرور خطاهای ثبت شده را از راه دور میسر میسازد، به همراه فید RSS از خطاها، امکان مشاهدهی مقادیر فیلدها در لحظهی بروز خطا، ارسال ایمیل خطاها و امکان ذخیره سازی آنها در فایلهای XML تا انواع بانکهای اطلاعاتی.
برای نمونه، سایت Stackoverflow از یک نمونهی سفارشی شدهی آن استفاده میکند (+).
همانطور که در این معرفی آمده است : ثبت استثناهای "مدیریت نشده". اما آیا امکان ثبت استثناهای مدیریت شده هم توسط آن وجود دارد؟
پاسخ: بله. به صورت زیر:
فقط کافی است ارجاعی به اسمبلی ELMAH اضافه شود و از سطر فوق استفاده گردد. به این صورت خروجی شبیه به همان خطاهای مدیریت نشده در لیست خطاهای ثبت شده توسط ELMAH ظاهر خواهد شد.
از آن میتوان جهت ثبت استثناهای مدیریت نشده در انواع و اقسام برنامههای وب دات نتی استفاده کرد. از برنامههای ASP.NET Webforms ، ASP.NET MVC تا سرویسهای WCF ، WCF RIA و غیره. سپس این Http module ویژه امکان مرور خطاهای ثبت شده را از راه دور میسر میسازد، به همراه فید RSS از خطاها، امکان مشاهدهی مقادیر فیلدها در لحظهی بروز خطا، ارسال ایمیل خطاها و امکان ذخیره سازی آنها در فایلهای XML تا انواع بانکهای اطلاعاتی.
برای نمونه، سایت Stackoverflow از یک نمونهی سفارشی شدهی آن استفاده میکند (+).
همانطور که در این معرفی آمده است : ثبت استثناهای "مدیریت نشده". اما آیا امکان ثبت استثناهای مدیریت شده هم توسط آن وجود دارد؟
پاسخ: بله. به صورت زیر:
... } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); ...
یک نکتهی تکمیلی
در یک سری از متدهای فایل global.asax عموما Context ای وجود ندارد (دقیقا مانند برنامههای دسکتاپ). در این حالت از روش زیر
استفاده کنید:
در یک سری از متدهای فایل global.asax عموما Context ای وجود ندارد (دقیقا مانند برنامههای دسکتاپ). در این حالت از روش زیر
Elmah.ErrorLog.GetDefault(null).Log(new Error(ex))
using System; using System.Text; using Elmah; namespace Common.WebToolkit { public static class ElmahLogEx { public static void LogException(this string ex) { if (string.IsNullOrWhiteSpace(ex)) return; LogException(new Exception(ex)); } public static void LogException(this Exception ex) { if (ex == null) return; try { ErrorSignal.FromCurrentContext().Raise(ex); } catch { ErrorLog.GetDefault(null).Log(new Error(ex)); } } } }