Structure Logging with Serilog

Serilogتعریففریم ورک open source هست که در دات نت برای عملیات logging استفاده می شود ، یک فریم ورک منعطف و موثر که لاگ ها رو می گیرد و آن ها را در فرمت های مختلف در دیتابیس ، فایل یا سرویس های خارجی به صورت ساختار یافته و حالت (key-value) ذخیره می کند و نسبت به فریم ورک هایی که به این منظور استفاده می شود جدیدتر است و نیاز به config خاصی برای نمایش ندارد.مانند بسیاری از کتابخانه های دیگر برای دات نت، Serilog امکان ثبت لاگ درون فایل، محیط کنسول، دیتابیس و جاهای دیگر با فرمت Json را فراهم می کند. راه اندازی Serilog بسیار آسان است و قابل استفاده در اکثر پلتفرم های دات نت می باشد.ویژگی های اصلی استفاده از logging api برای پشتیبانی از6 سطح مختلف لاگ Fatal : مربوط به خطاهایی است که برنامه را shutdown می کند (Forcing Shutdown) Error: مربوط به مشکلات جدی است که در طول اجرای برنامه اتفاق می افتد (during Execution) Warning : مربوط به گزارش مواردی که critical نیستند.(non-critical) Information : اطلاع رسانی پیغام هایی که پیشرفت برنامه را کاربر یا مدیر سیستم نمایش می دهد. Debug : اطلاعات مربوط به دیباگ سیستم (extended information)Verbose : برای رهگیری کد اطلاعاتی نمایش می دهد (tracing the code) اولویت بندی و سطح بندی لاگ ها بر اساس شدت و اهمیت با استفاده از سطوح مختلف لاگ یگپارچگی راحت با ابزارهایی مثل Seq , Elastic Search Override logger پشتیبانی از انواع SinkSink : ذخیره پیغام ها در storage با فرمت های مختلفSerilog برای نوشتن لاگ رویدادها در قالب های مختلف ذخیره سازی sink هایی را ارائه می دهد. این sink ها توسط جامعه گستردهSerilog توسعه یافته و پشتیبانی می شوند. که به صورت استاندارد داخل فایل یا کنسول ذخیره می شود.از معروف ترین sink های Serilog می توان به موارد زیر اشاره کرد: مثال هایی از sink ها که با Serilog پیاده شده اند Serilog.sinks.File Serilog.sinks.Telegram Serilog.Sinks.MongoDb Serilog.Sinks.ElasticSearch Serilog.Sinks.SeqLogs in seqSeq یک سرور جستجو ، تحلیل و هشدار است که برای لاگ کردن دیتای مدرن و ساختار یافته استفاده می شود . برای پیاده سازی آن باید nugget ان را به پروژه اضافه می کنیم و config مربوط به ان را در appsetting اضافه می کنیم که در آن محل ذخیره سازی لاگ نیز مشخص می شودSeq ویژگی های زیادی دارد که یکی از مهمترین مشخصه آن وجود داشبورد است که errors/exceptions/events را به صورت گرافیکی زیبا نمایش می دهد.Logs in ELK using serilog یک ELK موتور متن باز و ساختار یافته برای جستجو و تحلیل دیتاهای بزرگ استفاده می شودپکیج مربوط به آن را برای پیاده سازی اضافه می کنیم و config لازم را اضافه می کنیمساختار؟در گذشته پیغام های لاگ به صورت string هست اما Serilog به صورت ساختار یافته نمایش داده می شود و با فرمت Json هم نمایش داده می شود.مزایای ساختاری بودنخوانایی بالاتحلیل و فیلتر راحت تر دیتاهاآنالیز راحت تر لاگ ها در زمان دیباگ و troubleshootingساختار SerilogException : شامل پیغام خطا و stack trace (نحوه رهگیری) ، در صورتی که خالی باشد ExceptionEmpty نمایش داده می شود.Level : سطح لاگ را نمایش می دهدMessage :پیغام مربوط به اتفاقی که رخ داده به صورت متن ساده یا در حالت Json نمایش داده می شودProperties مقادیر مربوط به property ها که در خروجی نمایش داده می شودTimestamp : زمان ایجاد لاگ.پیاده سازی1. نصب پکیج های زیر2. Config project3. Add Iserilog to controllerمنابعhttps://satyampushkar.medium.com/serilog-logging-to-console-seq-elasticsearch-file-using-dotnet6-d9536b534209https://code-maze.com/structured-logging-in-asp-net-core-with-serilog/https://serilog.net/