پیکربندی میان افزار ثبت خطاها (ELM) در ASP.NET Core

یکشنبه 24 اردیبهشت 1396

ELM یا همان Error Logging Middleware یک ماژول بسیار قدرتمند برای مدیریت و ثبت گزارش های خطاهای رخ داده شده در برنامه است که یک جایگزین بسیار خوب و کامل برای ELMAH است که قابلیت استفاده در ورژن های جدید خانواده DotNet را دارد.

پیکربندی میان افزار ثبت خطاها (ELM) در ASP.NET Core

همانطور که در مقاله ELMAH گفته شده بود، ELMAH محبوبترین و یکی از راحت ترین ماژول ها برای مدیریت خطاهای برنامه های .net است. بعد از راه اندازی elmah.io، کتابخانه متن باز elmah دیگر بروز رسانی نشد. ورژن فعلی elmah دیگر کارایی ندارد، چراکه این ماژول بر اساس Asp.Net 4.x طراحی شده است. با استفاده از نمونه اولیه  ELM می توان خطاهای کنترل نشده را به خوبی مشاهده و ثبت کرد. شما می توانید ELM را به از طریق Package Management Console  یا به کمک Nuget package manager نصب کنید.

نصب از طریق nuget


PM> Install-Package Microsoft.AspNetCore.Diagnostics.Elm

یا نصب از روش زیر

"dependencies": {
"Microsoft.NETCore.App": {
  "version": "1.0.1",
  "type": "platform"
},
"Microsoft.AspNetCore.Diagnostics": "1.1.0",
"Microsoft.AspNetCore.Diagnostics.Elm": "0.2.0",
"Microsoft.AspNetCore.Mvc": "1.0.1",
"Microsoft.AspNetCore.Razor.Tools": {
  "version": "1.0.0-preview2-final",
  "type": "build"
},

بعد از آنکه ماژول را با موفقیت نصب کردید، وقت پیکربندی ELM است. فایل Startup.cs را باز کرده و متد ConfigureServices را پیدا کنید تا ماژول ELM را با کمک یک متد از نوع extension  که نام آن AddElm می باشد ثبت کنید.

public void ConfigureServices(IServiceCollection services)
{
   // Add framework services.
     services.AddMvc();
     services.AddElm(options => {
   options.Path = new PathString("/elm");
  options.Filter =(name, level) => level == LogLevel.Error;
     });
}

LogLevel یک مقدار از نوع enum است که نوع و شدت لاگ گیری را معین می کند. در ادامه LogLevel هایی که می توانید از آنها در ELM استفاده کنید آورده شده است.

Trace

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

Debug

این نوع از لاگ ها برای بررسی ارورها، هنگام توسعه سیستم استفاده می شوند. این لاگ ها باید حاوی اطلاعات مفیدی برای دیباگ کردن باشد و اطلاعات طولانی نداشته باشند.

Information

لاگ هایی که جریان اصلی برنامه را مشخص می کنند. این لاگ ها باید حاوی اطلاعات طولانی باشند.

Warning

لاگ هایی که رخدادهای غیر منتظره و غیر عادی در جریان برنامه را مشخص می کند، اما این رخدادها و اتفاقات باعث توقف اجرای برنامه نمی شوند.

Error

ثبت لاگ رخداد هایی که در هنگام اجرای برنامه باعث توقف اجرا و شکست در اجرای برنامه می شوند. این لاگ ها باید در لحظه گزارش شوند تا برطرف گردند.

Critical

لاگ هایی که اهمیت آنها بسیار زیاد است، مثلا برای مواردی که باعث خرابی های غیر قابل تعمیر در سیستم می شود و اتفاق های این چنین که حتما باید در سریع ترین زمان ممکن به مدیر سیستم اعلام شوند.

None

از این نوع LogLevel  برای عدم ثبت لاگ ها استفاده می شود، تا دیگر در سیستم لاگ ثبت نشود.

بعد از اینکه این سرویس پیکربندی شد، متد Configure  را پیدا کرده و کدهای زیر را به آن اضافه کنید. در اینجا app.UseElmPage() برای تنظیم آدرس صفحه ELM است و app.UseElmCapture() برای اضافه کردن ElmLoggerProvider استفاده می شود.

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    app.UseElmPage();
    app.UseElmCapture();

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}

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

آموزش asp.net mvc

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

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

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

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