حسین احمدی
بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

آموزش لاگ (Log) برداری در ASP.NET Core (فایل web.config)

مبحث Logging یکی از موارد بسیار پر کاربرد و مهم برای توسعه دهندگان است. بوسیله فعال کردن قابلیت Logging شما می توانید از اتقاقات و خطاهایی که در داخل برنامه رخ می دهد اطلاع پیدا کرده و مشکلات رو با سرعت بیشتری رفع کنید. در این مطلب قصد داریم تا با نحوه فعال سازی قابلیت Logging در ASP.NET Core آشنا شویم. این مطلب در دو بخش نوشته میشه که بخش اول به نحوه فعال سازی قابلیت Logging بوسیله فایل web.config اشاره داره و در بخش دوم با نحوه استفاده از nlog برای Logging می پردازیم.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

برای اجرای برنامه های ASP.NET Core ما باید از یک وب سرور استفاده کنیم. وب سرور پیش فرض ASP.NET Core با نام Kestrel شناخته میشه که توسط تیم ASP.NET و به صورت اختصاصی برای ASP.NET Core نوشته شده. اما زمانی که قصد هاست کردن وب سایت های ASP.NET Core در محیط ویندوز رو داشته باشیم، می تونیم از IIS به عنوان یک Proxy Server استفاده کنیم، به این صورت که درخواست ها توسط IIS دریافت میشن، بعد به Kestrel منتقل میشن تا عملیات پردازش درخواست انجام بشه و بعد پاسخ دوباره به IIS ارسال میشه و IIS پاسخ مورد نظر رو به سمت Client بر میگردونه. زمانی که از IIS به عنوان یک Proxy Server استفاده می کنیم، داخل پوشه وب سایت یک فایل web.config ایجاد میشه که معمولاً محتویاتش به صورت زیر هست:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
    <aspNetCore processPath=".\Tosinso.exe" arguments="exec &quot;D:\Website\Tosinso\bin\Debug\netcoreapp2.2\Tosinso.dll&quot;" stdoutLogEnabled="false" hostingModel="InProcess" stdoutLogFile=".\logs\stdout">
        <environmentVariables>
          <environmentVariable name="ASPNETCORE_HTTPS_PORT" value="443" />
          <environmentVariable name="COMPLUS_ForceENC" value="1" />
          <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
        </environmentVariables>
      </aspNetCore>
      <security>
        <requestFiltering>
          <requestLimits maxAllowedContentLength="1073741824" />
        </requestFiltering>
      </security>
    </system.webServer>
  </location>
</configuration>

بخش مهم این فایل قسمت handlers هست که aspNetCore رو به Handler های IIS اضافه می کنه که وظیفه انتقال درخواست ها به وب سرور Kestrel رو داره. قسمت aspNetCore تعریفی از وب سایت ما مانند مسیر فایل های مورد نیاز رو در اختیار ما میزاره. در این قسمت خصوصیتی وجود داره به نام stdoutLogEnabled که به صورت پیش فرض غیر فعال یا false هست (در صورتی که این خصوصیت تعریف نشده، می تونید به صورت دستی اضافش کنید). در صورتی که این خصوصیت رو فعال کنید فایل های log در مسیری که بوسیله خصوصیت stdoutLogFile مشخص شده ایجاد میشن که در نمونه بالا مسیر logs\stdout هست. برای فعال سازی خط مورد نظر باید به صورت زیر تغییر کنه:

      <aspNetCore processPath=".\Tosinso.exe" arguments="exec &quot;D:\Website\Tosinso\bin\Debug\netcoreapp2.2\Tosinso.dll&quot;" stdoutLogEnabled="true" hostingModel="InProcess" stdoutLogFile=".\logs\stdout">

یکی از کاربردهای مهم این قابلیت گرفتن log از خطاهایی هست که قابلیت Logging خود ASP.NET Core امکان ثبت اون ها رو نداره. برای مثال خطاهایی مثل خطای 500.30 که به دلایل مختلفی مثل مشکل در فایل config یا مشکل در .net core runtime باعث بروزشون میشه رو می تونن به راحتی از این قسمت پیگیری کنید.


حسین احمدی
حسین احمدی

بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب

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

نظرات