سیستم Logging در نسخه Core بصورت پیشفرض موجوده اما در پروژه های غیر Core اگر نیاز به استفاده از اون رو داشتید باید اول پکیج Microsoft.Extensions.Logging.Console رو نصب کنید.
طریقه استفاده ازین سیستم بسیار راحته و کانفیگ خیلی خاصی نداره که بخوایم درموردش صحبت کنیم اما قبل از استفاده باید با اصطلاحات اولیه اون آشنا بشیم.
چیزی که مسعولیت ثبت Log در برنامه های Core را دارد Logging Api تعریف شده در خود پلتفرم Asp.Net Core میباشد. Log ها طبق این سیستم ذخیره میشوند و توسط Provider های مختلف قابل نمایش میباشند.
اما Logging Provider چیست؟ ابزاری که با استفاده از آن میتوانیم Log های ذخیره شده توسط Logger را مشاهده کنیم و یا بعضا دستور ذخیره Log هارا به Logger ارسال کنیم.
در ادامه لیستی از Logging Provider های موجود را میبینیم که شامل Debug , Console , EventSource , EventLog , AzureAppService , Application Insights و... میباشد. Log Provider های متنوعی وجود دارد که بعضی از آن ها مزایا و معایب خود را دارند و قابل همگام سازی با سیستم Asp.Net Core Logging میباشند مثل Provider های Serilog , NLog و دیگر پکیج هایی که برای این موضوع وجود دارد.
در وهله بعد وقتی صحبت از ذخیره Log ها به میان میاید تعاریفی برای درجه اهمیت هر Log و الویت بندی Log ها مطابق اهمیتشان وجود دارد که به ما کمک میکند دسته بندی و نظم بهتری در Log های برنامه خودمان بیابیم. به این الویت ها اصطلاحا Log Level گفته میشود که به شرح زیر میباشد.
◾️الویت 0 Trace
گزارش هایی که شامل دقیق ترین پیام ها هستند. این پیام ها ممکن است حاوی داده های حساس برنامه باشند. این پیام ها به طور پیش فرض غیرفعال هستند و هرگز نباید در محیط تولید فعال شوند.
◾️الویت 1 Debug
اطلاعات مربوط به بررسی لحظه ای در حین رفع خطا یا روند Debuging. این گزارش ها در درجه اول باید حاوی اطلاعات مفید برای رفع اشکال باشند و هیچ ارزش طولانی مدت ندارند.
◾️الویت 2 Information
گزارش هایی که جریان کلی برنامه را ردیابی می کنند. این Log ها باید چرخه درازمدت داشته باشند.
◾️الویت 3 Warning
گزارش هایی که یک رویداد غیر عادی یا غیر منتظره را در جریان برنامه ثبت میکنند ، اما در غیر این صورت باعث توقف اجرای برنامه نمی شوند.
◾️الویت 4 Error
گزارش هایی که هنگام توقف جریان اجرای فعلی به دلیل خرابی ، ثبت می شوند. اینها باید نشان دهنده یک شکست در فعالیت فعلی باشد ، نه یک شکست در کل برنامه.
◾️الویت 5 Critical
اطلاعات غیرقابل بازیابی برنامه یا خرابی سیستم که نیاز به توجه فوری دارد.
برای فعالسازی Logging پیشفرض در Core ابتدا باید در کلاس Program برنامه Provider مورد استفاده را مشخص کنید. اطلاعات مربوط به Log Level نمایشی برنامه در فایل AppSettingJson قرار دارد که معمولا Log Level نمایشی روی Information قرار دارد و Log هایی با الویت کمتر از Information را نمایش نمیدهد. میتوانید با تغیر در سطح الویت LogLevel اطلاعات مربوط به سطوح پایین تر یعنی Trace و Debug را نیز مشاهده کنید.
روش های دیگری نیز برای دسته بندی Log ها وجود دارد از جمله Log Category یا Log Event Id که میتوانید به سادگی از آن ها استفاده کنید و دسته بندی دلخواه خود را برای Log ها در برنامه داشته باشید.