مدیرت خطاها با استفاده از Elmah در MVC

شنبه 20 آذر 1395

در این مقاله قصد داریم با elmah ، طریقه استفاده از آن و چگونگی پیکربندی آن آشنا شویم.که در زیر به طورکامل آن را توضیح میدهیم.

مدیرت خطاها با استفاده از Elmah در MVC

ELMAH مخفف Error Logging Modules And Handlers

ELMAH تابع هایی را برای errorهای زمان اجرای لاگین در اختیار ما قرار میدهد.

چرا ما elmah را انتخاب کرده ایم؟

• ELMAH  تمام exception های مدیریت نشده را login میکند.

• ELMAH  تمام error ها را log میکند در بسیاری از حافظه ها مانند :

SQL Server

My SQL

(Randon Access Memory (RAM

SQL Lite

Oracle

•  ELMAH همچنین عملکردی برای دانلود تمام error ها در فایل CSV نیز دارد.

•  RSS feed برای 15 error آخر

•  گرفتن تمام دیتا error ها در فرمت XML یا JSON

•  گرفتن تمام error ها برای mailbox

•  ارسال اعلانات error به برنامه کاربردی شما.

• شخصی سازی error log با استفاده از چند کد شخصی سازی.

ماژول های HTTP برای Elmah :

  سه ماژول HTTP  داریم :

1- ErrorMailModule

2- ErrorLogModule

3- ErrorFilterModule

ErrorMailModule برای ارسال جزییات log از طریق ارسال ایمیل استفاده میشود.

ErrorLogModule برای log تمام exception ها و جزییات دیگری مانند  IP-Address, Usersname, Website Username و .. استفاده میشود.

ErrorFilterModule برای شخصی سازی exceptino برای  logها استفاده میشود..

با استفاده از کد :

مرحله 1 : ساخت یک new MVC Application 

1) بر روی فایل کلیک کرده از منو باز شده بر روی New و سپس Project را انتخاب کنید.

2)  در پنجره ی باز شده زبانه ی  "#Visual C" را انتخاب و سپس برروی  "Web" کلیک کنید و نام آن را ما در اینجا "DemoELMAH" را انتخاب کرده ایم.

3) بر روی پنجره روی   "MVC" کلیک کنید ، سپس  "Change Authentication"  را انتخاب کنید و در آخر  "No Authentication" را انتخاب کنید و سپس OK را کلیک کنید.

مرحله 2: نصب کتابخانه ELMAH  و ثبت ماژول های آن.

1) NuGet Package Manager Console  را به صورت زیر باز کنید :

Tools > NuGet Package Manager > Package Manager Console

2) در کنسول باز شده "Install-Package elmah" را بنویسید و سپس دکمه enter را فشار دهید.

3) بعد از نصب موفقیت آمیز شما صفحه ی زیر را میبینید :

4) ماژول های Elmah  به صورت پیش فرض در WebConfig ثبت شده اند.
اگر اینطور نبود کد های زیر را وارد کنید :

<system.web>
    <compilation debug="true" targetFramework="4.5.2" />
    <httpRuntime targetFramework="4.5.2" />
    <httpModules>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
    </httpModules>
</system.web>

<system.webServer>
    <modules>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
    </modules>
</system.webServer>

<elmah>
    <security allowRemoteAccess="false" />
</elmah>

<location path="elmah.axd" inheritInChildApplications="false">
    <system.web>
      <httpHandlers>
        <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
      </httpHandlers>
    </system.web>
    <system.webServer>
      <handlers>
        <add name="ELMAH" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
      </handlers>
    </system.webServer>
</location>

5) یک ActionMethod میسازیم :

public ActionResult Index()
{
    return View();
}

پروژه را اجرا میکنید و سپس یک مسیر اشتباه را در URL  وارد میکنیم , و سپس enter را میزنیم. Error 404 را میبینیم 

حال برای ELMAH Log  ادرس زیر را وارد کنید :

http://localhost:57979/elmah.axd

نکته : Mvc به طور پیش فرض در حال حاضر فایل های axd. را نادیده میگیرد .پس این یکی در سرور استفاده نمیشود.

مرحله 3) Setup mail server  برای گرفتن تمام log ها در ایمیل .

کد های زیر را در webconfig اضافه کنید :

<elmah>
     <errorMail from="suchit@elmah.com"
     to="suchit.webmyne@gmail.com"
     subject="Error - ELMAH demo - Suchit Khunt"
     async="true" />    
</elmah>

<system.net>
    <mailSettings>
      <smtp deliveryMethod="Network">
        <network host="host address" port="port number" userName="your username" password="your password"/>
      </smtp>
    </mailSettings>
</system.net>

مرحله 4) ذخیره سازی   ELMAH logs  در مسیری متفاوت :

1) ذخیره سازی   ELMAH logs در فایل XML 

یک فولدر به نام "ElmahLog"  در root پروژه ی خود بسازید. ما از این فولدر برای ذخیره فایل های XML  استفاده میکنیم.

کد زبر را در webconfig اضافه کنید :

<elmah>
    <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/ElmahLog" />
</elmah>

2) ذخیره سازی   ELMAH logs در RAM :

تنظیمات زیر را در webconfig اضافه کنید :

<elmah>
    <errorLog type="Elmah.MemoryErrorLog, Elmah" size="100" />
</elmah>

3) ذخیره سازی   ELMAH logs  در Microsoft SQL Server :

تنظیمات زیر را در webconfig اضافه کنید :

<elmah>
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionString="DBEntities" />
</elmah>

نکته : فراموش نکنید که connectionString name خود را بانام "DBEntities" اضافه کنید.مانند زیر :

<connectionStrings>
    <add name="DBEntities" connectionString="data source=server name;initial catalog=database name;persist security info=True;user id=your username;password=your password;Trusted_Connection=True" />
</connectionStrings>

آموزش asp.net mvc

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید