نحوه فعالسازی لاگ در Net Core
لاگینگ (Logging) یکی از مهمترین ابزارها برای برنامهنویسان جهت شناسایی مشکلات، بررسی عملکرد برنامه و ثبت رخدادها است. در NET Core.، یک سیستم لاگینگ قدرتمند و انعطافپذیر ارائه شده است که به شما این امکان را میدهد تا بهراحتی لاگها را در برنامه خود فعال و مدیریت کنید. در این مقاله، نحوه فعالسازی و استفاده از سیستم لاگینگ در NET Core. را مرحلهبهمرحله توضیح خواهیم داد.
---
مفهوم لاگینگ در NET Core.
لاگینگ به معنای ثبت و ذخیره اطلاعات مربوط به عملکرد برنامه در زمان اجرا است. این اطلاعات میتواند شامل پیامهای خطا، هشدارها، اطلاعات دیباگ، یا رخدادهای دیگر باشد. استفاده از لاگینگ به شما کمک میکند:
مشکلات را سریعتر شناسایی و برطرف کنید.
رفتار و عملکرد برنامه را زیر نظر بگیرید.
اطلاعات مفیدی برای تحلیل و بهینهسازی سیستم به دست آورید.
---
مراحل فعالسازی لاگ در NET Core.
1. افزودن Dependencyهای مورد نیاز
در ابتدا، باید مطمئن شوید که پکیجهای موردنیاز برای لاگینگ در پروژه شما نصب شدهاند. خوشبختانه، NET Core. بهصورت پیشفرض از سیستم لاگینگ پشتیبانی میکند. برای استفاده از لاگینگ پیشفرض، نیازی به نصب کتابخانه اضافی ندارید.
اما اگر قصد دارید از سرویسهای لاگینگ شخص ثالث مانند Serilog یا NLog استفاده کنید، باید پکیجهای مربوطه را با استفاده از NuGet Package Manager نصب کنید. بهعنوان مثال:
dotnet add package Serilog.Extensions.Hosting
dotnet add package Serilog.Sinks.Console
---
2. تنظیمات اولیه در Program.cs یا Startup.cs
در NET Core.، میتوانید لاگینگ را در فایلهای Program.cs یا Startup.cs پیکربندی کنید. برای نمونه:
پیکربندی ساده لاگینگ:
در این مثال، لاگهای تولیدشده در کنسول نمایش داده میشوند:
using Microsoft.Extensions.Logging;
var builder = WebApplication.CreateBuilder(args);
// افزودن لاگینگ به برنامه
builder.Logging.ClearProviders(); // حذف لاگینگ پیشفرض
builder.Logging.AddConsole(); // افزودن لاگ کنسول
var app = builder.Build();
app.MapGet("/", () => "Hello, World!");
app.Run();
توضیح کد:
ClearProviders(): تمامی ارائهدهندگان پیشفرض لاگینگ را حذف میکند.
AddConsole(): لاگها را در کنسول نمایش میدهد.
---
3. تعریف سطوح مختلف لاگینگ
NET Core. از سطوح مختلف لاگینگ پشتیبانی میکند که عبارتاند از:
Trace: اطلاعات بسیار جزئی که معمولاً برای دیباگ استفاده میشوند.
Debug: پیامهایی که در زمان دیباگ کاربرد دارند.
Information: اطلاعات کلی درباره عملکرد برنامه.
Warning: پیامهای هشداردهنده.
Error: خطاهایی که مانع ادامه اجرای بخشی از برنامه میشوند.
Critical: خطاهای بحرانی که ممکن است باعث توقف کل برنامه شوند.
برای تنظیم سطح لاگینگ، میتوانید از تنظیمات زیر در appsettings.json استفاده کنید:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}
توضیح:
Default: سطح پیشفرض برای تمامی لاگها.
Microsoft: سطح لاگ برای کلاسهای داخلی مایکروسافت.
Microsoft.Hosting.Lifetime: سطح لاگ برای چرخه عمر هاست برنامه.
---
4. استفاده از Logger در کلاسها
برای استفاده از لاگینگ در کلاسهای مختلف، باید از اینترفیس ILogger استفاده کنید. بهعنوان مثال:
using Microsoft.Extensions.Logging;
public class MyService {
private readonly ILogger<MyService> _logger;
public MyService(ILogger<MyService> logger) {
_logger = logger;
}
public void Execute() {
_logger.LogInformation("This is an information log.");
_logger.LogWarning("This is a warning log.");
_logger.LogError("This is an error log.");
}
}
---
5. استفاده از ارائهدهندگان مختلف لاگینگ
NET Core. به شما این امکان را میدهد که لاگها را به مقاصد مختلف ارسال کنید. برخی از ارائهدهندگان رایج عبارتاند از:
Console: نمایش لاگها در کنسول.
Debug: ارسال لاگها به دیباگر.
File: ذخیره لاگها در فایل.
Third-party providers: ارائهدهندگانی مانند Serilog و NLog برای امکانات پیشرفتهتر.
برای استفاده از Serilog:
using Serilog;
var builder = WebApplication.CreateBuilder(args);
// پیکربندی Serilog
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.File("logs/log.txt", rollingInterval: RollingInterval.Day)
.CreateLogger();
builder.Host.UseSerilog();
var app = builder.Build();
app.MapGet("/", () => "Hello, Serilog!");
app.Run();
---
6. ذخیره لاگها در فایل
اگر بخواهید لاگها را در یک فایل ذخیره کنید، میتوانید از ارائهدهندگان فایل یا شخص ثالث استفاده کنید. برای مثال با Serilog:
Log.Logger = new LoggerConfiguration()
.WriteTo.File("logs/log.txt")
.CreateLogger();
---
نکات پایانی
اهمیت لاگینگ در برنامههای تولیدی: لاگینگ مناسب میتواند زمان رفع اشکال و تحلیل برنامه را بهطور قابلتوجهی کاهش دهد.
تنظیم سطح لاگینگ متناسب با نیاز: در محیطهای تولیدی، سطح لاگینگ را به Warning یا بالاتر محدود کنید تا از ثبت اطلاعات غیرضروری جلوگیری شود.
استفاده از ابزارهای پیشرفته: برای پروژههای بزرگتر، ابزارهایی مانند Serilog امکان
ات بیشتری را برای مدیریت لاگها ارائه میدهند.
با رعایت این مراحل، میتوانید یک سیستم لاگینگ قابلاعتماد و انعطافپذیر در NET Core. راهاندازی کنید و برنامه خود را بهتر مدیریت کنید.