مدیرت خطاها با استفاده از Elmah در MVC
شنبه 20 آذر 1395در این مقاله قصد داریم با elmah ، طریقه استفاده از آن و چگونگی پیکربندی آن آشنا شویم.که در زیر به طورکامل آن را توضیح میدهیم.
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
- ASP.net MVC
- 2k بازدید
- 4 تشکر