PDA

View Full Version : Log كردن Error ها



Mostafa_Dindar
شنبه 30 آبان 1388, 20:26 عصر
سلام دوستان .
ميخواستم بدونم چطور بايد Error ها رو لاگ گيري كنم .
از راهنماييهاتون ممنونم .

Aidin
شنبه 30 آبان 1388, 20:38 عصر
در فایل Global.asax رویدادی به نام Application_Error وجود داره ، با استفاده از این رویداد و پارامتر اون میتونید خطا هاتون رو log کنید.

Mostafa_Dindar
شنبه 30 آبان 1388, 20:46 عصر
در فایل Global.asax رویدادی به نام Application_Error وجود داره ، با استفاده از این رویداد و پارامتر اون میتونید خطا هاتون رو log کنید.
مرسي .
يعني همه Exception ها اين رويداد رو Raise ميكنند ؟ اگه يك مثال كوچولو بزنين ممنون ميشم.
اگه بخوام از Try Catch كه براي مديريت خطا استفاده ميكنم همزمان Error ها رو هم Log كنم چي ؟ روش قبلي بهتره ؟

Aidin
شنبه 30 آبان 1388, 21:02 عصر
Exception ex = Server.GetLastError().GetBaseException();

string MESSAGE = ex.Message;
string SOURCE = ex.Source;
string FORM = Request.Form.ToString();
string QUERYSTRING = Request.QueryString.ToString();
string TARGETSITE = ex.TargetSite;
string STACKTRACE = ex.StackTrace;

Hossein Bazyan
شنبه 30 آبان 1388, 21:41 عصر
Exception ex = Server.GetLastError().GetBaseException();

string MESSAGE = ex.Message;
string SOURCE = ex.Source;
string FORM = Request.Form.ToString();
string QUERYSTRING = Request.QueryString.ToString();
string TARGETSITE = ex.TargetSite;
string STACKTRACE = ex.StackTrace;
سلام
حالا این کد کجا نوشته میشه ؟
داخل Global یا در try برنامه ؟
میشه بیشتر توضیح دهید؟

Aidin
شنبه 30 آبان 1388, 21:51 عصر
میتونید این مقادیر رو در Global.asax به ایمیل مورد نظرتون ارسال کنید یا در یک فایل و یا در دیتابیس ذخیره کنید ،
و یا در یک صفحه پیغام خطا مناسب نمایش بدین .

Hossein Bazyan
شنبه 30 آبان 1388, 22:04 عصر
میتونید این مقادیر رو در Global.asax به ایمیل مورد نظرتون ارسال کنید یا در یک فایل و یا در دیتابیس ذخیره کنید ،
و یا در یک صفحه پیغام خطا مناسب نمایش بدین .

سلام
منظور من این بود که این کدها در کجای globas.asax باید نوشته شود و در صفحات دیگر وب سایت نباید هیچ کدی نوشته شود؟ میشه یه مثال ساده بنویسید؟

Mostafa_Dindar
شنبه 30 آبان 1388, 22:06 عصر
در فایل Global.asax رویدادی به نام Application_Error وجود داره ، با استفاده از این رویداد و پارامتر اون میتونید خطا هاتون رو log کنید.
مرسي از راهنماييتون
اين هندلر تمام error ها رو ميگيره يا تنها Error هايي كه با Try Catch گرفته نشده ؟

Aidin
شنبه 30 آبان 1388, 22:08 عصر
در رویداد Application_Error


protected void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError().GetBaseException();

string MESSAGE = ex.Message;
string SOURCE = ex.Source;
string FORM = Request.Form.ToString();
string QUERYSTRING = Request.QueryString.ToString();
string STACKTRACE = ex.StackTrace;

// Code to mail or save

}

Aidin
شنبه 30 آبان 1388, 22:19 عصر
در صورتی که از try catch استفاده نشود این event فراخوانی میشود.

Hossein Bazyan
شنبه 30 آبان 1388, 22:51 عصر
در صورتی که از try catch استفاده نشود این event فراخوانی میشود.
سلام
درسته اما اگر بخواهیم خطاهای try هم کنترل بشه چی ؟

Aidin
شنبه 30 آبان 1388, 22:55 عصر
میتونید یک تایع (و یا یک کلاس) برای این کار بنویسید و در قسمت catch اون رو فراخوانی کنید.
البته در حالت کلی Application_error برای خطا های مدیریت نشده است.
یا بهتر بگم برای مدیریت خطاهای پیش بینی نشده است.