لاگ گیری یا Logging چیست؟
امروزه لاگ گرفتن از سیستم یکی از اساسی ترین مواردی است که هر اپلیکیشنی به آن نیاز دارد. برای عیب یابی هر گونه مشکل در سیستم استفاده از logger امری ضروری است. Logger برای ایجاد فایل های خطای سفارشی شده یا رویدادهای سیستم استفاده می شود.
با کمک logging نه تنها می توانیم آنچه را که در برنامه اتفاق میافتد ردیابی کنیم، بلکه به ردیابی هر نوع exception نیز کمک میکند. این exception در واقع زمانی مفید است که متد دقیق و شماره خط را با جزئیات پیام مناسب نشان دهد. بنابراین با کمک log، توسعه دهندگان می توانند به راحتی بفهمند که خطای واقعی چیست.
Serilog چیست؟
Serilog یک کتابخانه logging ساختاری برای Microsoft.Net است و به کتابخانه logging ترجیحی برای برنامههای .Net تبدیل شده است.
کتابخانه های logging ، ارسال لاگ های خود را به مکان های مختلف از طریق پیکربندی های ساده آسان میکنند. Serilog از آنچه (سینک)sink نامیده می شود استفاده می کند تا لاگ های ما را به یک فایل متنی، پایگاه داده یا مکان های دیگر ارسال کند.
مانند بسیاری از کتابخانه های دیگر برای دات نت، Serilog امکان ثبت لاگ درون فایل، محیط کنسول، دیتابیس و جاهای دیگر را فراهم می کند. راه اندازی Serilog بسیار آسان است و قابل استفاده در اکثر پلتفرم های دات نت می باشد.
الگوهای پیام Serilog یک DSL ساده است که فرمت رشته های .NET را گسترش می دهد. پارامترها را می توان نام گذاری کرد و مقادیر آن ها به عنوان ویژگی روی event برای انعطاف پذیری باور نکردنی در جستجو و مرتب سازی serialize میشوند.
var position = new { Latitude = 25, Longitude = 134 };
var elapsedMs = 34;
log.Information("Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs);
این مثال دو ویژگی Position و Elapsed را به همراه رویداد log ثبت می کند. ویژگی های ثبت شده در مثال، در قالب JSON، به صورت زیر ظاهر می شوند:
{"Position": {"Latitude": 25, "Longitude": 134}, "Elapsed": 34}
عملگر @ در جلوی Position به Serilog میگوید که به جای تبدیل آن با استفاده از ToString، شیء ارسال شده را serialize کند.
بخش :000 در Elapsed یک فرمت رشته ستاندارد دات نت است که بر نحوه رندر شدن ویژگی تأثیر می گذارد. sink کنسول همراه با Serilog پیام فوق را به صورت زیر نمایش می دهد:
09:14:22 [Information] Processed { Latitude: 25, Longitude: 134 } in 034 ms.
Sink(سینک) ها در Serilog
Serilog برای نوشتن لاگ رویدادها در قالب های مختلف ذخیره سازی sink هایی را ارائه می دهد. این sink ها توسط جامعه گسترده Serilog توسعه یافته و پشتیبانی می شوند. از معروف ترین sink های Serilog می توان به موارد زیر اشاره کرد:
- Console
- File
- SQL Server
- Seq
لیست کامل sink های Serilog را از اینجا ببینید.
چرا باید از Serilog استفاده کنیم؟
- اکوسیستم وسیع Serilog متشکل از صدها انجمن است که کنسول، فایل، صف پیام، Seq، جستجوی الاستیک، مرکز رویداد Azure و غیره را پوشش میدهد.
- API ساده و آسان برای توسعه دارد.
- قابلیت تعویض یکپارچه فرمت خروجی به متن ساده یا Json.
- راه اندازی آن بسیار آسان است.
آموزش نحوه استفاده از Serilog در Asp.net Core
ما در این دوره آموزشی ابتدا یک پروژه Asp.net Core 6 MVC ایجاد خواهیم کرد و سپس Serilog را برای انجام عملیات Logging به آن اضافه خواهیم کرد. در ادامه نحوه استفاده از سینک های Console، File، SQLServer و Seq در Serilog را در Asp.net Core 6 آموزش خواهیم داد.
سرفصل های دوره آموزش استفاده از Serilog در Asp.net Core
- آموزش نحوه راه اندازی و استفاده از Serilog در Asp.net Core
- آموزش نحوه استفاده از سینک Console در Serilog در Asp.net Core
- آموزش نحوه استفاده از سینک File در Serilog در Asp.net Core
- آموزش نحوه استفاده از سینک SQLServer در Serilog در Asp.net Core
- آموزش نحوه استفاده از سینک Seq در Serilog در Asp.net Core
- آموزش نحوه خواندن تنظیمات سینک Serilog از فایل appsettings.json در Asp.net Core
- آموزش نحوه استفاده از Enricher(غنی کننده ها) در Serilog در Asp.net Core
برای ثبت نظر باید در سایت ثبت نام یا ورود نمایید