Logging হলো অ্যাপ্লিকেশনের মধ্যে তথ্য, ত্রুটি, এবং অন্যান্য লগ তৈরি এবং সংগ্রহ করার একটি প্রক্রিয়া। ASP.NET Core এর মধ্যে Logging ব্যবস্থাপনা বিল্ট-ইন রয়েছে, যা অ্যাপ্লিকেশন ডেভেলপারদের সহজে লগ ডেটা সংগ্রহ করতে এবং বিশ্লেষণ করতে সহায়ক। ASP.NET Core-এ লগিংয়ের জন্য কিছু গুরুত্বপূর্ণ কম্পোনেন্ট রয়েছে, যেমন ILogger, LogLevel, এবং Logging Providers।
ASP.NET Core Logging-এর প্রধান উপাদান
1. ILogger Interface
ASP.NET Core-এর লগিং ব্যবস্থাপনা মূলত ILogger ইন্টারফেসের মাধ্যমে কাজ করে। ILogger বিভিন্ন স্তরের লগ তৈরি করতে এবং লগ তথ্য ফিল্টার করতে সহায়ক। এটি ডেটা রেকর্ড করার জন্য একটি এপিআই সরবরাহ করে যা ডেভেলপারদের বিভিন্ন ধরনের লগিং ইনফরমেশন যেমন ইনফরমেশন, ত্রুটি, ওয়ার্নিং ইত্যাদি তৈরি করতে সহায়তা করে।
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.LogInformation("Index action called at {Time}", DateTime.Now);
return View();
}
}
এখানে, ILogger ব্যবহার করে Index অ্যাকশনে লগ করা হয়েছে, যা তথ্য (Information) স্তরের লগ তৈরি করবে।
2. LogLevel
ASP.NET Core-এ লগিং স্তরগুলি বিভিন্ন ধরনের লগ তৈরি করতে সহায়ক, যা লগিং-এ তথ্যের গুরুত্ব এবং স্তর নির্ধারণ করে। এগুলো হল:
- Trace: সবচেয়ে কম গুরুত্বের লগ, যা ডেভেলপমেন্ট এবং ডিবাগিং সময় প্রয়োজনীয়।
- Debug: ডিবাগিংয়ের জন্য লগ। সাধারণত প্রোডাকশন পরিবেশে এই ধরনের লগ সংরক্ষণ করা হয় না।
- Information: সাধারণত অ্যাপ্লিকেশনের সাধারণ কার্যক্রম সম্পর্কে লগ। এটি প্রোডাকশন পরিবেশে ব্যবহৃত হয়।
- Warning: কোনো সমস্যা হতে পারে এমন পরিস্থিতির জন্য লগ। এটি ব্যবহারকারীর পক্ষে সরাসরি প্রভাব ফেলতে পারে না, কিন্তু মনোযোগ দেওয়া উচিত।
- Error: কোনো ত্রুটি ঘটলে লগ। এই ধরনের লগ প্রোডাকশন পরিবেশে গুরুত্বপূর্ণ।
- Critical: গুরুতর ত্রুটি। যেখানে অ্যাপ্লিকেশন পুরোপুরি কাজ বন্ধ করতে পারে।
আপনি যখন লগ তৈরি করবেন, তখন আপনি লগ স্তরের নির্বাচন করতে পারেন:
_logger.LogError("An error occurred while processing your request.");
_logger.LogWarning("This is a warning message.");
3. Logging Providers
ASP.NET Core বিভিন্ন Logging Providers সরবরাহ করে, যা আপনাকে লগ ডেটা এক বা একাধিক জায়গায় সংরক্ষণ করতে সহায়তা করে। কিছু সাধারণ লগিং প্রোভাইডার হল:
- Console: লগ ডেটা কনসোলে প্রিন্ট করা হয়।
- Debug: লগ ডেটা ডিবাগ উইন্ডোতে পাঠানো হয় (ডিবাগিংয়ের জন্য ব্যবহার করা হয়)।
- EventLog: Windows Event Log-এ লগ লেখা হয়।
- File: লগ ফাইল হিসেবে সংরক্ষিত করা হয় (থার্ড-পার্টি প্রোভাইডার ব্যবহৃত হয়)।
- Application Insights: মাইক্রোসফট অ্যাপ্লিকেশন ইনসাইটস-এর মাধ্যমে লগ স্টোরেজ।
- Seq, Serilog ইত্যাদি কাস্টম প্রোভাইডার।
এগুলো কনফিগারেশন ফাইলে বা Startup.cs-এ কনফিগার করা হয়।
ASP.NET Core Logging কনফিগারেশন
ASP.NET Core-এ লগিং কনফিগারেশন করার জন্য Program.cs বা Startup.cs ফাইলে লগ প্রোভাইডার ও লগ স্তর নির্ধারণ করা হয়। নিচে একটি সাধারণ কনফিগারেশন দেখানো হলো:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging((context, logging) =>
{
logging.ClearProviders(); // ডিফল্ট প্রোভাইডার মুছে ফেলা
logging.AddConsole(); // কনসোল লগ প্রোভাইডার যোগ করা
logging.AddDebug(); // ডিবাগ প্রোভাইডার যোগ করা
logging.SetMinimumLevel(LogLevel.Information); // লগ স্তর নির্ধারণ
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
এখানে, AddConsole এবং AddDebug প্রোভাইডার যোগ করা হয়েছে এবং লগ স্তর হিসেবে Information নির্ধারণ করা হয়েছে, যার মানে হলো Information, Warning, Error, এবং Critical স্তরের লগ সংরক্ষণ হবে, কিন্তু Trace বা Debug স্তরের লগ সংরক্ষণ হবে না।
1. Log Level Filtering
আপনি প্রতিটি প্রোভাইডারের জন্য আলাদা লগ স্তর ফিল্টার করতে পারেন। উদাহরণস্বরূপ, যদি আপনি কেবলমাত্র Error এবং তার উপরের লগ কনসোলে দেখতে চান তবে আপনি এইরকম কনফিগার করতে পারেন:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging((context, logging) =>
{
logging.ClearProviders();
logging.AddConsole(options =>
{
options.LogToStandardErrorThreshold = LogLevel.Error;
});
logging.SetMinimumLevel(LogLevel.Information);
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
2. File Logging using Serilog
ASP.NET Core এ Serilog ব্যবহার করে ফাইল লগিং কনফিগার করা খুবই জনপ্রিয়। প্রথমে Serilog এবং Serilog.Sinks.File প্যাকেজ ইনস্টল করতে হবে।
dotnet add package Serilog
dotnet add package Serilog.Sinks.File
এবং তারপর Program.cs ফাইলে Serilog কনফিগার করতে হবে:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging((context, logging) =>
{
logging.ClearProviders();
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.File("app.log", rollingInterval: RollingInterval.Day)
.CreateLogger();
logging.AddSerilog();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
এখানে Serilog কনফিগার করা হয়েছে যাতে লগ ডেটা app.log ফাইলে এবং কনসোলে লেখা হবে।
ASP.NET Core Logging এর ব্যবহার কেস
- ডিবাগিং: ডেভেলপমেন্টে এবং প্রোডাকশন পরিবেশে সমস্যা শনাক্ত করতে লগিং ব্যবহার করা হয়।
- অথেন্টিকেশন এবং অথরাইজেশন: ব্যবহারকারী লগইন বা লগআউটের সময় লগ ডেটা ব্যবহার করা হয়, যেমন লগইন সময় এবং লগইন ফলাফল।
- ত্রুটি রিপোর্টিং: অ্যাপ্লিকেশনে কোনো ত্রুটি ঘটলে তা লগ করা এবং ডেভেলপারদের অবহিত করা।
- প্রোডাকশন মনিটরিং: প্রোডাকশনে অ্যাপ্লিকেশন চলাকালে লগ তৈরি করা, যাতে সিস্টেমের স্বাস্থ্য এবং পারফরম্যান্স মনিটর করা যায়।
সারাংশ
ASP.NET Core-এর Logging ব্যবস্থাপনা আপনাকে অ্যাপ্লিকেশন থেকে লগ তথ্য সংগ্রহ করতে এবং তা বিশ্লেষণ করতে সহায়তা করে। লগ স্তরগুলি এবং বিভিন্ন প্রোভাইডার ব্যবহার করে আপনি লগিংকে কাস্টমাইজ করতে পারেন, যা ডেভেলপমেন্ট, ডিবাগিং এবং প্রোডাকশন পরিবেশে অত্যন্ত কার্যকর। ILogger ইন্টারফেস, লগ স্তর (LogLevel), এবং বিভিন্ন লগ প্রোভাইডার (Console, Debug, File, etc.) এর মাধ্যমে আপনি অ্যাপ্লিকেশন পর্যবেক্ষণ করতে পারেন।
Read more