نحوه پیکربندی ELMAH برای لاگ گیری خطاها در MVC

چهارشنبه 20 اردیبهشت 1396

ELMAH که مخفف عبارت Error Logging Modules and Handlers در واقع امکانی برای مدیریت لاگ گیری از ارور ها است.در این مقاله ما ماژول ELMAH را به یک پروژه asp.net MVC اضافه می کنیم و افزودن ELMAH به پروژه را در 5 مرحله توضیح خواهیم داد.

نحوه پیکربندی ELMAH برای لاگ گیری خطاها در MVC

ELMAH که مخفف عبارت Error Logging Modules and Handlers در واقع  امکانی برای مدیریت لاگ گیری از ارور ها است. از قابلیت های ELMAH می توان به استفاده بسیار ساده از آن اشاره کرد و اینکه بدون تغییر حتی یک خط کد می توان آن را پیاده سازی کرد. ELMAH بر اساس ارور های کنترل نشده در dotnet طراحی شده که این ارور ها در صفحات زرد رنگ نمایش داده می شود. با توجه به گفته های برنامه نویس این ماژول، شما می توانید این ماژول را به یک برنامه asp.net در حال اجرا اضافه کنید و به کامپایل دوباره یا قرار دادن دوباره برنامه در هاست نیازی نیست. شما می توانید کد های باینری ELMAH را از گوگل کد دریافت کنید یا که از nuget استفاده کنید و آن را مستقیما به پروژه خود اضافه کنید.

نصب

بهترین راه برای نصب یک ماژول در Asp.net MVC استفاده از Nuget است.

پیکربندی

بعد از نصب ELMAH به صورت خودکار فایل Web.Config نیز بروزرسانی می شود. اگر بروزرسانی نشد می توانید کدهای زیر را به Web.Config اضافه کنید.

<configuration>
<configSections>
    <sectionGroup name="elmah">
      <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
      <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
      <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
      <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
    </sectionGroup>
</configSections>

<system.web>    
    <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" />
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="YourConnectionStringName" />
</elmah>
    <location path="elmah.axd" inheritInChildApplications="false">
    <system.web>
      <httpHandlers>
        <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
      </httpHandlers>
      <!-- 
      <authorization>
        <allow roles="admin" />
        <deny users="*" />  
      </authorization>
      -->  
    </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>
</configuration>

حالا وقت آن است که ELMAH را تست کنیم، برای این منظور در کنترلر Home یک ارور به صورت دستی ایجاد می کنیم.

public ActionResult Index()
{
   throw new Exception("This is test Exception");
           
   return View();
}

بعد از افزودن ارور وقت آن است که ELMAH را بررسی کنیم، با باز کردن آدرس http://www.example.com/elmah.axd شما خروجی شبیه تصویر زیر مشاهده می کنید.



امنیت

ELMAH دارای یک سیستم امنیتی یکپارچه است که از دسترسی های غیر مجاز به سیستم جلوگیری می کند.

دسته بندی کردن

ELMAH ارور ها را شناسایی می کند و آنها را در دسته بندی های مختلف ذخیره می کند، شما می توانید صفحه ارور ELMAH را ویرایش کنید یا یک صفحه جدید بسازید که دارای فیلتر های جدید و متفاوتی باشد.

آگاه سازی

با تنظیم بخش email notification در ماژول ELMAH، این ماژول وقتی اروری رخ دهد به شما ایمیل ارسال می کند، برای راه اندازی این قابلیت باید کدهای زیر را به برنامه اضافه کنید.

افزودن ماژولErrorMail

<httpModules>
    <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah"/>
</httpModules>

افزودن تنظیمات SMTP

<system.net>
    <mailSettings>
        <smtp deliveryMethod="network">
            <network host="..." port="25" userName="..." password="..." />
        </smtp>
    </mailSettings>
</system.net>
 
or
<elmah>
<errorMail from="..." to="..."  async="true" smtpServer="..." smtpPort="25" userName="..." password="..." />
</elmah>

آموزش asp.net mvc

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

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

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

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