نحوه استفاده از خطایابی توسط Log4Net در MVC

دوشنبه 8 تیر 1394

در این مقاله نحوه استفاده از Log4Net برای خطایابی در برنامه کاربردی MVC را توضیح خواهیم داد.

نحوه استفاده از خطایابی توسط Log4Net در MVC

قبل از اینکه توضیح بدهیم که log4net چه چیزی است ، میخواهیم عملیات گزارش گیری را شرح دهیم.

گزارش گیری(Logging):

در محاسبات Logfile یک فایل است که رکوردها یا رویدادها در یک سیستم عامل یا در یک برنامه یا زمانی که نرم افزار را اجرا می کند، رخ می دهد. 

گزارش گیری یک روشی از نظارت /پیگیری می باشد، در زمانی که برنامه در حال اجرا می باشد.

وقتی که در برنامه شما فرآیندی با مشکل روبرو می شود، رکورد های logمورد استفاده قرار می گیرد. 

LOG4NET :

Log4net یک منبع باز(open source) کتابخانه است که اجازه می دهد یا کمک می کند تا برنامه های NET. برای ردیابی جزئیات خطا که در پروژه رخ داده است. 

حالا توضیح خواهیم داد که چگونه از Log4Net برای ردیابی خطا در پروژه MVC استفاده کنیم. برای یادگیری این مقاله اول یک سایت ASP.Net (یک NewProject mvc) ایجاد کنید.

در مرحله بعد اضافه کردن کتابخانه با استفاده از NuGet Log4Net که باید آن را نصب کنیم. برای این کار در منوی Tools و گزینه Library Package Manager را انتخاب کنید.

 

گزینه Manage NuGet Pakage را انتخاب کنید. یک پنجره همانند شکل زیر باز می شود که برای افزودن بسته جدید گزینه Online را انتخاب کنید ودر سمت راست صفحه در نوار جستجو کلمه NuGet موردنظر (Log4Net) وارد کنید و نتیجه را بعد از بارگذاری مشاهده می کنید که بعد از انتخاب آن را نصب کنید. 

بعد از نصب ،صفحه به صورت اتوماتیک نمایان می شود که این بسته بر روی پروژه شما نصب خواهد شد. همان طور که در ادامه می بینید دکمه ok را انتخاب کنید. 

 

یک راه دیگر برای نصب NuGet، می توان نسخه نصب NuGet Log4Net را از اینجا در قسمت Package Manager Console نصب کرد که همانند شکل زیر مشاهده کنید :

 

وقتی که Log4Net در پروژه شما با موفقیت نصب شد در حال حاضر آماده برای استفاده از آن می باشد. که شما می توانید فایل DLL مورد نظر خود را در پوشه Bin پروژه خود یا در Solution Explorer در قسمت پوشه Reference مشاهده کنید. 

در مرحله بعدی یک Controller به نام Home بسازید و دستورات کد زیر را در آن اضافه کنید:


    public class HomeController : Controller  
    {  
       log4net.ILog logger = log4net.LogManager.GetLogger(typeof(HomeController));  //Declaring Log4Net  
       public ActionResult Index()  
       {  
          try  
          {  
             int x, y, z;  
             x = 5; y = 0;  
             z = x / y;  
          }  
          catch(Exception ex)  
          {  
             logger.Error(ex.ToString());  
          }  
          return View();  
       }     
    }  

در کد بالا خطای تقسیم بر صفر را مشاهده می کنید و چون مقدار را بر صفر تقسیم کردیم با یک پیغام خطا مواجه شدیم، پس به دنبال راه حل برای این خطا هستیم. 

برای این کار ما نیاز به تنظیمات در web.config داریم که یک section با نام Log4Net در <configsections> در web.config ایجاد کنید. 


    <configSections>  
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />  
    </configSections>  
       
    <log4net debug="false">  
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">  
    <param name="File" value="C:\test\test.log" />  
    <!--<param name="AppendToFile" value="true"/>-->  
    <layout type="log4net.Layout.PatternLayout">  
    <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n" />  
    </layout>  
    </appender>  
       
    <root>  
    <level value="All" />  
    <appender-ref ref="LogFileAppender" />  
    </root>  
    </log4net>  

تصویر زیر را برای درک بهتر می توانید مشاهده کنید :

APPENDER : تگ </appender> المنت (element)مشخصی از نام و نوع Logger می باشد که آن قسمت از اطلاعات که گزارش داده شده را مشخص می کند. Logger قسمتی است که گزارش خطا را با کمک appender به مکان گزارش می برد. 

param name : نام فایل و مسیرآدرس که در آن گزارش ذخیره می شود را مشخص می کند. 

Layout: المنت Layout به Log4Net می گوید که هر خط گزارش چگونه به نظر می رسد . 

Root :  ما به یک بخش root که در سطح بالای منبع (reference) گزارش گیری قرار دارد، نیاز داریم که در واقع گزارش هایی هستند که اطلاعات را از گزارش اولیه ارث بری می کند. 

پروژه را با متد Index و Home controller اجرا کنید و فایل log (گزارش) را در C\Test\Test.log بررسی کنید. در واقع می توانید جزئیات مربوط به استثنا را دریافت کنید. 

 

از آنجایی که چندین بار اجرا کردیم خطای مشابه را به همان تعداد با تاریخ و زمان نشان می دهد. بنابراین ما از این راه می توانیم برای خطایابی در سناریوی واقعی Log4Net استفاده کنیم. 

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

نرگس محمدی

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

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

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