مقدمه ای بر NLog در هسته ASP.NET
1397/10/19 16:27 , بهزاد ناظمی

مقدمه ای بر NLog در هسته ASP.NET

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

هسته ASP.NET دارای پشتیبانی داخلی برایAPI گزارش گیری است و قادر به کار با ارائه دهندگان مختلف گزارش گیری می باشد.

با استفاده از این ارائه دهندگان داخلی ما می توانیم گزارش های مربوط به برنامه را به یک یا چند مقصد ارسال کنیم و همچنین می توانیم از چارچوب های ورود به سیستم شخص ثالث مانند Serilog، Nlog و غیره استفاده کنیم.

 در این مقاله ما یاد می گیریم چگونه NLog را با هسته اصلی ASP اجرا کنیم.

NLog یک منبع باز و چارچوب انعطاف پذیر است که با سیستم عامل های مختلف دات نت مانند استاندارد .NET، فریمورک کامل (یعنی .NET Framework 4.7) ، Xamarin  ، ویندوز فون و UWP کار می کند.

 NLog برای استفاده و گسترش آسان است. همچنین انعطاف پذیری بیشتر در شرایط پیکربندی  آن را فراهم می کند. هدف ذخیره، نمایش و ارسال پیام های ورودی به مقصد ارائه شده مورد استفاده قرار می گیرد. NLog می تواند در یک زمان یک یا چند اهداف را وارد کند. NLog بیش از 30 اهداف که شامل خود فایل، گزارش رویداد سیستمی، پایگاه داده، ایمیل، کنسول و غیره را فراهم می کند.

مراحل زیر را برای تنظیم NLog در برنامه Core ASP.NET دنبال کنید.

مرحله 1 - وابستگی NLog را به صورت دستی به فایل csproj یا با استفاده از NuGet اضافه کنید

با اجرای دستورات زیر میتوانیم وابستگی NLog را با استفاده از NuGet اضافه کنیم.

  1. PM> Install-Package NLog  
  2. PM> Install-Package NLog.Web.AspNetCore  

دو دستور فوق برای افزودن وابستگی به فایل csproj استفاده می شود.

<ItemGroup>  
<PackageReference Include="Microsoft.AspNetCore.App" />  
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" />  
<PackageReference Include="NLog.Web.AspNetCore" Version="4.5.4" />  
<PackageReference Include="NLog" Version="4.5.4" />  
</ItemGroup> 

 

مرحله 2 - فایل پیکربندی nlog را ایجاد کنید.

فایل پیکربندی NLog یک فایل XML است که حاوی تنظیمات مربوط به NLog است. این پرونده باید در موارد پایین نامگذاری شود و ممکن است در ریشه پروژه قرار گیرد.

 

دو عنصر اصلی برای هر پیکربندی وجود دارد: اهداف و قواعد.

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

 عنصر اصلی یک هدف log را تعریف می کند که توسط یک عنصر هدف تعریف شده است. دو ویژگی اصلی وجود دارد: نام (نام هدف) و نوع (نوع هدف مانند فایل، پایگاه داده، و غیره). همچنین ویژگی های اضافی در دسترس با عنصر هدف وجود دارد، اما آنها به نوع هدف بستگی دارد؛ برای مثال - نوع هدف یک فایل است، ما باید پارامتر نام فایل را که برای تعیین نام فایل خروجی استفاده می شود تعریف کنیم. جدا از این، عنصر هدف حاوی ویژگی طرح است که فرمت داده ورود به سیستم را تعریف می کند.

 

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

  • نام - نام الگوریتم گزارش گیر
  • minlevel -حداقل سطح گزارش سیستم
  • maxlevel- حداکثر سطح گزارش سیستم
  • سطح - سطح گزارش مجزا
  • سطوح – لیستی از گزارش ها جدا شده با کاما
  • writeTo- لیستی از اهداف جدا شده با کاما را برای نوشتن به
  • نهایی - پس از یک قاعده نهایی، هیچ قاعده ای پردازش نمی شود
  • فعال - تنظیم به false برای غیر فعال کردن قانون بدون حذف آن

 

<?xml version="1.0"encoding="utf-8" ?>  
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true" internalLogLevel="info" internalLogFile="internalLog.txt">  
<extensions>  
<add assembly="NLog.Web.AspNetCore" />  
</extensions>  
<!-- the targets to write to -->  
<targets>  
<!-- write to file -->  
<target xsi:type="File" name="alldata" fileName="demo-${shortdate}.log" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />  
<!-- another file log. Uses some ASP.NET core renderers -->  
<target xsi:type="File" name="otherFile-web" fileName="demo-Other-${shortdate}.log" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />  
</targets>  
<!-- rules to map from logger name to target -->  
<rules>  
<logger name="*" minlevel="Trace" writeTo="alldata" />  
<!--Skip non-critical Microsoft logs and so log only own logs-->  
<logger name="Microsoft.*" maxLevel="Info" final="true" />  
<loggername="*"minlevel="Trace"writeTo="otherFile-web" />  
</rules>  
</nlog> 

این فایل باید در جایی که dll پروژه قرار دارد در دسترس باشد. بنابراین، ما باید پوشهcopy to bin  را فعال کنیم.

 

مرحله 3 - پیکربندی NLog در برنامه

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

publicclass Program  
{  
public static void Main(string[] args)  
{  
var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();  
try  
{  
Debug("init main function");  
CreateWebHostBuilder(args).Build().Run();  
}  
catch (Exception ex)  
{  
Error(ex, "Error in init");  
throw;  
}  
finally  
{  
LogManager.Shutdown();  
}  
}  
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>  
CreateDefaultBuilder(args)  
.UseStartup<Startup>()  
.ConfigureLogging(logging =>  
{  
ClearProviders();  
SetMinimumLevel(LogLevel.Information);  
})  
.UseNLog();  
}  

در کد بالا، ما همچنین گزارش گیری را پیکربندی میکنیم. این می تواند توسط فایل appsettings.json انجام شود. بنابراین، ما باید آن را به درستی بر اساس نیاز خود تنظیم کنیم.

 

نسخه ی نمایشی

 همانطور که می دانیم، Logger بصورت پیش فرض به عنوان DI (injection injection) برای هر کنترلر در دسترس است، ما یک شی ILogger در سازنده کلاس کنترل داریم.

publicclass HomeController : Controller  
{  
private readonly ILogger<HomeController> _logger;  
public HomeController(ILogger<HomeController> logger)  
{  
_logger = logger;  
}  
public IActionResult Index()  
{  
LogInformation("HomeController.Index method called!!!");  
return View();  
}  
}  

خروجی

 

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

 

خلاصه

 

NLog یک چارچوب منبع باز برای گزارش گیری سیستم است. با برنامه ASP.NET Core پیکربندی آسان است. در این مقاله، درباره پیکربندی گزارش گیری با فایل NLog با ASP.NET Core 2 توضیح داده شده است.

شما می توانید کد منبع را از لینک GitHub مشاهده یا دانلود کنید.

 

           برگرفته از :    https://www.c-sharpcorner.com/article/introduction-to-nlog-with-asp-net-core2/

از آخرین دوره های آموزشی و تخفیف ها مطلع شوید

با تکمیل فرم زیر ، از اخبار و اطلاعات به روز برنامه نویسی و تکنولوژی عقب نمانید

آخرین مطالب

آموزش جامع SQL Server (جلسه ۱۲)
آموزش جامع SQL Server (جلسه ۱۲)

دستور UPDATE در SQL Server برای تغییر داده‌های موجود در یک جدول، از دستور UPDATE به شکل زیر استفاده ...

آموزش جامع SQL Server (جلسه ۱۵)
آموزش جامع SQL Server (جلسه ۱۵)

دستور DROP TABLE در SQL Server گاهی، لازم است یک جدول که دیگر استفاده‌ای ندارد را حذف کنید. برای ...

آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)
آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)

بخش اول از آخرین مبحث دوره جامع آموزش SQL Server در جلسه قبلی بررسی شد. این مبحث که ...

آخرین دیدگاه ها

دیدگاه خود را درباره این پست بنویسید

فرم ارسال نظرات