بسیاری از برنامههای کاربردی .NET به طور تاریخی لاگها را به صورت رشتههای متنی ساده منتشر میکردند. اشکالزدایی این لاگها نیازمند جستجوهای سنگین با عبارات با قاعده (regex) بود و ارسال لاگها به مقاصد جدید نیازمند بازنویسی کد برنامه بود. Serilog این مشکل را با در نظر گرفتن لاگها به عنوان دادههای ساختاریافته حل میکند.
Serilog با در نظر گرفتن لاگها به عنوان دادههای ساختاریافته، بیشتر این کارها را از بین میبرد و تعریف پیکربندیهایی مانند مقاصد خروجی را بدون نیاز به تغییر کد آسانتر میکند. با این حال، با افزایش محبوبیت OpenTelemetry (OTel)، بسیاری از توسعهدهندگان سردرگم شدهاند. آیا OTel رقیب Serilog است؟ آیا باید از هر دو یا فقط یکی از آنها استفاده کرد؟ این راهنما به بررسی این موضوع میپردازد.
در این راهنما، پیکربندی Serilog برای لاگبرداری ساختاریافته با چندین sink، ارسال لاگها و traceها با استفاده از OpenTelemetry و OTLP و همچنین همبستگی لاگها با traceهای توزیعشده در یک backend مشاهدهپذیری واقعی را بررسی خواهیم کرد. Serilog با گرفتن رویدادهای برنامه به عنوان دادههای ساختاریافته، امکان افزودن اشیاء پیچیده و فرادادههای دقیق به دستورات لاگ را فراهم میکند.
Serilog با ارائه enricherها، امکان افزودن خودکار فرادادهها به هر دستور لاگ را فراهم میکند و تلاش دستی مورد نیاز برای نگهداری لاگها را به میزان قابل توجهی کاهش میدهد. همچنین، مدیریت مقاصد خروجی لاگها با استفاده از sinkها در Serilog آسانتر شده است. برای مثال، میتوان لاگها را در یک پایگاه داده SQLite با استفاده از تنظیمات appsettings.json ذخیره کرد.
این راهنما به توسعهدهندگان .NET کمک میکند تا با استفاده از Serilog و OpenTelemetry، سیستمهای لاگبرداری و trace خود را بهبود بخشند و قابلیت مشاهدهپذیری برنامههای خود را افزایش دهند.
مشاهده مطلب اصلی