نحوه ی پیاده سازی NLog در Web API

پیاده سازی NLog
پیاده سازی NLog در Web API ، در این مقاله ما به بررسی استفاده از NLog در Web API میپردازیم و نحوه پیاده سازی آن را پیش میگیریم.در ادامه همراه ما باشید.

NLog  یک پلتفرم گزارشگیری منعطف و رایگان برای پلتفرم های متنوع .NET، از جمله استاندارد .NET، است. NLog کار نوشتن بر چندین target/هدف را آسان می کند (database، file، event viewer).

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

NLog می تواند برای گزارشگیری چندین target تنظیم شود.

پیاده سازی NLog در Web API

اگرقسمت اول  آموزش NLog چیست را نخوانده‏ اید همواره می‏توانید آن را در لینک‏ زیر بخوانید.

در این مقاله، موارد زیر را پوشش خواهیم داد.

  1. تعریف
  2.  پشتیبانی
  3. سطح گزارش
  4. چرا به گزارش نیاز داریم
  5. از کجا گزارش بگیریم
  6.  پیاده سازی
  7. خلاصه

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

پشتیبانی

NLog از پلتفرم های زیر پشتیبانی می کند،

  • .NET Framework 3.5, 4, 4.5, 4.6, 4.7
  • .NET Framework 4 client profile (پروفایل سرویس گیرنده)
  •  Xamarin Android
  •  Xamarin iOS
  •  Windows Phone 8
  •  Silverlight 4 and 5
  • Mono 4
  •  ASP.NET 4 (پکیج NLog.Web)
  • ASP.NET Core (پکیج NLog.Extensions.Logging)
  •  .NET Standard 1.x – NLog 4.5
  • .NET Standard 2.x – NLog 4.5
  • UWP – NLog 4.5

سطوح گزارش

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

یک آرایش معمول، تعیین بعد پایه، جایی که آن بعد و مقادیر بزرگتر به ثبت می رسند.

برای نمونه، در رویدادی که بعد پایه از جمله Info، Warn، Error و Fatal گزارشگیری می شوند، با این حال، Debug و Trace در نظر گرفته نمی شوند.

سطوح گزارش، در درخواست متغیر/sliding، بصورت زیر می باشند.

پیاده سازی NLog

چرا به گزارش نیاز داریم

گزارشگیری یکی از ویژگی های کلیدی هنگام ایجاد هر برنامه ی نرم افزاری، برای مثال روی ویندوز و روی وب و … است.

NLog یک ابزار گزارش گیری متن باز فوق العاده است که مهندسین نرم افزار را قادر می سازد تا ساختار گزارشگیری را بطور مؤثر و ماهرانه به عمل درآورند.

در این پست، ابزار مورد نیاز جهت تنظیم و بکارگیری NLog در برنامه‌ی خود را نشان خواهم داد.

از کجا گزارش بگیریم

می‌توانیم از NLog به راحتی در مکان‌های زیر استفاده کنیم:

  1. Files (فایل ها)
  2.  Event Viewer Log (گزارش نظاره گر رویداد)
  3. Database (پایگاه داده)
  4. Network (شبکه)
  5. Email (ایمیل)
  6. Console (کنسول)

پیاده سازی NLog

مرحله ۱

Visual Studio را باز کنید. File > New > Project را انتخاب کنید.

پیاده سازی NLog

مرحله ۲

Web > ASP.NET Web Application را انتخاب کرده، یک نام به پروژه‌ی خود اختصاص دهید (من NLogTest را انتخاب کردم) و سپس OK را کلیک کنید.

پیاده سازی NLog

پیاده سازی NLog

مرحله ۳

WebAPI را انتخاب کرده و OK را کلیک کنید.

پیاده سازی NLog

پیاده سازی NLog

مرحله ۴

اکنون، باید NLog را به پروژه‌ی خود اضافه کنید.

بنابراین، مراحل این بخش را دنبال کنید.

بر روی Solution مربوط به پروژه‌ی خود کلیک راست کرده، بر روی “Manage NuGet Packages” کلیک کنید.

بر روی دکمه ی لینک “Browse” کلیک کرده و در کادر/جعبه ی جستجو، nlog را تایپ کنید.

NLogDll را بصورت زیر به شما نشان خواهد داد. تنها این DLL را نصب کنید.

پیاده سازی NLog

پیاده سازی NLog

پس از آن، هنگامیکه بر روی “Install” کلیک می کنید، پنجره ی زیر، یعنی Preview Changes، را دریافت خواهید کرد.

پیاده سازی NLog

پیاده سازی NLog

در این پنجره‌ی popup ، دکمه‌ی OK را کلیک کنید. پس از اینکه با موفقیت نصب شد، Nlog DLL را در مرجع پروژه‌ی خود خواهید یافت.

پیاده سازی NLog

پیاده سازی NLog

حال، نیمی از پیکربندی انجام شده‌است! بیایید به مرحله‌ی بعد برویم.

مرحله ۵

اکنون، کد زیر را به فایل config (پیکربندی) خود اضافه کنید.

<configSections>  
    
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />  
</configSections>  
<nlog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
    <targets>  
        <target name="logfile" xsi:type="File" fileName="${basedir}/MyLogs/${date:format=yyyy-MM-dd}-api.log" />  
        <target name="eventlog" xsi:type="EventLog" layout="${message}" log="Application" source=" My Custom Api Services" />  
        <target name="database" type="Database" connectionString="Data Source=your sql source;initial catalog=YourDbNameDb;user id=u1;password=p1;MultipleActiveResultSets=True;">  
            <commandText> insert into ExceptionLog ([TimeStamp],[Level],Logger, [Message], UserId, Exception, StackTrace) values (@TimeStamp, @Level, @Logger, @Message, case when len(@UserID) = 0 then null else @UserId end, @Exception, @StackTrace); </commandText>  
            <parameter name="@TimeStamp" layout="${date}" />  
            <parameter name="@Level" layout="${level}" />  
            <parameter name="@Logger" layout="${logger}" />  
            <parameter name="@Message" layout="${message}" />  
            <parameter name="@UserId" layout="${mdc:user_id}" />  
            <parameter name="@Exception" layout="${exception}" />  
            <parameter name="@StackTrace" layout="${stacktrace}" />  
            <dbProvider>System.Data.SqlClient</dbProvider>  
        </target>  
    </targets>  
    <rules>  
        <!-- I am adding my 3 logging rules here -->  
        <logger name="*" minlevel="Debug" writeTo="database" />  
        <logger name="*" minlevel="Trace" writeTo="logfile" />  
        <logger name="*" minlevel="Trace" writeTo="eventlog" />  
    </rules>  
</nlog>  

در این فایل Config، هدف من گزارش گیری در سه مکان است.

  • database (پایگاه داده)
  • txt file (فایل متنی)
  • Event Viewer (نظاره‌گر رویداد)

لطفا به صفحه‌ی زیر رجوع کنید.

پیاده سازی NLog

پیاده سازی NLog

مرحله ۶

حال، در مرحله ی ۵ ، نیاز است DB Script خود را بصورت زیر ایجاد کنیم.

CREATE TABLE [dbo].[exceptionlog]   
  (   
     [id]         [INT] IDENTITY(1, 1) NOT NULL,   
     [timestamp]  [DATETIME] NOT NULL,   
     [level]      [VARCHAR](100) NOT NULL,   
     [logger]     [VARCHAR](1000) NOT NULL,   
     [message]    [VARCHAR](3600) NOT NULL,   
     [userid]     [INT] NULL,   
     [exception]  [VARCHAR](3600) NULL,   
     [stacktrace] [VARCHAR](3600) NULL,   
     CONSTRAINT [PK_ExceptionLog] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (   
     pad_index = OFF, statistics_norecompute = OFF, ignore_dup_key = OFF,   
     allow_row_locks = on, allow_page_locks = on) ON [PRIMARY]   
  )   
ON [PRIMARY]  

مرحله ۷

اکنون، به Home Controller خود رفته و فضای نام nlog را درست به شکل زیر اضافه کنید.

Using NLog;

و، کد زیر را به این متد index اضافه کنید. اطلاعات در فایل‌های target/هدف گزارش گیری خواهند شد.

using NLog;  
using System;  
using System.Web.Mvc;  
namespace NLogTest.Controllers {  
    public class HomeController: Controller {  
        private static Logger logger = LogManager.GetCurrentClassLogger();  
        public ActionResult Index() {  
            ViewBag.Title = "Home Page";  
            logger.Info("Hell You have visited the Index view" + Environment.NewLine + DateTime.Now);  
            return View();  
        }  
        public ActionResult About() {  
            ViewBag.Message = "Your app description page.";  
            logger.Info("hello now You have visited the About view" + Environment.NewLine + DateTime.Now);  
            return View();  
        }  
    }  
} 

پیاده سازی NLog

پیاده سازی NLog

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

پیاده سازی NLog

پیاده سازی NLog

می‌توانید این را در Event Viewer خود مشاهده کنید.

پیاده سازی NLog

پیاده سازی NLog

می‌توانید موارد زیر را در فایل متنی خود ببینید.

پیاده سازی NLog

پیاده سازی NLog

حال، می‌توانید Event Viewer خود را به روش‌های زیر باز کنید.

جهت دسترسی به Event Viewer:

  1.  بر روی دکمه‌ی Start کلیک راست کرده و Control Panel > System & Security را انتخاب کرده و روی Administration Tools جفت کلیک کنید.
  2. بر روی Event Viewer جفت کلیک کنید.
  3. نوع گزارش‌هایی که می‌خواهید بازنگری کنید را انتخاب کنید (خطا، اطلاعات، …).

یا

Windows + R را برای بازکردن پنجره‌ی Run فشار داده و “eventviewer” را تایپ کنید.

خلاصه پیاده سازی NLog

با وجود اکثر Web APIها، اتصال سیستم گزارش گیری دلخواه خود، ساده و روان است و با وجود این امر،‌ می‌توانید بر سیستم‌های دنبال‌کننده و بررسی‌کننده‌ی خود نظارت کنید.

و می‌توانید از آن بر روی ویژگی‌های برجسته‌ی محبوب‌ترین ساختار گزارش گیری خود استفاده کنید  همانطور که من از nLog برای این موقعیت بهره بردم.

 

زهره سلطانیان

نوشته‌های مرتبط

دیدگاه‌ها

*
*

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