ASP.Net অ্যাপ্লিকেশনগুলিতে Logging এবং Error Handling গুরুত্বপূর্ণ ভূমিকা পালন করে, কারণ এটি অ্যাপ্লিকেশনের কার্যকারিতা ট্র্যাক করতে এবং সম্ভাব্য ত্রুটিগুলো পরিচালনা করতে সহায়ক। সঠিকভাবে লোগিং এবং ত্রুটি হ্যান্ডলিং করা হলে, এটি ডেভেলপারদের অ্যাপ্লিকেশনের সমস্যাগুলি দ্রুত সনাক্ত এবং সমাধান করতে সাহায্য করে। এছাড়াও, এটি অ্যাপ্লিকেশনের স্থিতিশীলতা এবং নিরাপত্তা নিশ্চিত করতে সহায়ক।
Logging হল অ্যাপ্লিকেশনের কার্যকলাপের তথ্য সংগ্রহ এবং রেকর্ড করার প্রক্রিয়া, যা ত্রুটি শনাক্তকরণ, পারফরম্যান্স বিশ্লেষণ, এবং সিস্টেম মনিটরিংয়ের জন্য ব্যবহৃত হয়। ASP.Net Core অ্যাপ্লিকেশনে লোগিং সিস্টেম সহজে কনফিগার এবং ব্যবহার করা যায়।
ASP.Net Core অ্যাপ্লিকেশনগুলোতে ILogger ইন্টারফেস ব্যবহৃত হয়, যা বিভিন্ন ধরনের লগ (ইনফো, ওয়ার্নিং, ডিবাগ, এরর) লেখার জন্য ব্যবহৃত হয়। এটির মাধ্যমে আপনি বিভিন্ন লগ আউটপুট, যেমন কনসোল, ফাইল বা ডেটাবেসে লগ সংরক্ষণ করতে পারেন।
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(); // Default providers clear
logging.AddConsole(); // Console logs enable
logging.AddDebug(); // Debug logs enable
logging.AddEventSourceLogger(); // EventSource logger enable
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
এখানে, আমরা Console, Debug, এবং EventSource লগিং প্রোভাইডার যোগ করেছি। আপনি চাইলে অন্যান্য লগিং প্রোভাইডারও যুক্ত করতে পারেন।
লগ লেখার জন্য ILogger ইন্টারফেস ব্যবহার করা হয়। Controller, Service, অথবা Middleware ক্লাসে লগ লেখার জন্য এটি ইনজেক্ট করা যেতে পারে।
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.LogInformation("Index action visited.");
return View();
}
public IActionResult Error()
{
_logger.LogError("An error occurred in Error action.");
return View();
}
}
এখানে, LogInformation
এবং LogError
মেথডগুলি বিভিন্ন স্তরের লগ তৈরি করতে ব্যবহৃত হয়েছে। LogInformation সাধারণ ইনফরমেশন লগ, এবং LogError ত্রুটি লগ তৈরি করবে।
Error Handling হলো ত্রুটি শনাক্তকরণ এবং যথাযথভাবে তা পরিচালনা করার প্রক্রিয়া। ASP.Net Core তে ত্রুটি হ্যান্ডলিং একটি গুরুত্বপূর্ণ অংশ এবং এটি অ্যাপ্লিকেশনের স্থিতিশীলতা এবং নিরাপত্তা বজায় রাখতে সহায়ক।
ASP.Net Core তে ত্রুটি হ্যান্ডলিং সাধারণত Middleware ব্যবহার করে পরিচালিত হয়। আপনি UseExceptionHandler এবং UseDeveloperExceptionPage মেথডগুলির মাধ্যমে ত্রুটি হ্যান্ডলিং কনফিগার করতে পারেন।
UseDeveloperExceptionPage ব্যবহার করলে ডেভেলপারদের জন্য বিস্তারিত ত্রুটি বার্তা প্রদর্শিত হবে, যা ডিবাগিংয়ের জন্য সহায়ক।
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage(); // Developer error page
}
else
{
app.UseExceptionHandler("/Home/Error"); // Production error handling
app.UseHsts();
}
}
এখানে, ডেভেলপার মোডে ত্রুটি বার্তা বিস্তারিতভাবে প্রদর্শিত হবে, তবে প্রোডাকশন মোডে ব্যবহারকারীকে Error পৃষ্ঠায় রিডাইরেক্ট করা হবে।
প্রোডাকশন মোডে অ্যাপ্লিকেশনে ত্রুটির বার্তা সরাসরি ব্যবহারকারীকে না দেখিয়ে, ত্রুটিটি একটি সাধারণ Error পৃষ্ঠায় রিডাইরেক্ট করা হয়।
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
}
এখানে, যখন কোন ত্রুটি ঘটবে, তখন ব্যবহারকারীকে /Home/Error URL এ রিডাইরেক্ট করা হবে।
public class HomeController : Controller
{
public IActionResult Error()
{
return View();
}
}
<h2>Sorry, something went wrong.</h2>
<p>Please try again later or contact support.</p>
এখানে, ব্যবহারকারী যখন ত্রুটি পৃষ্ঠায় রিডাইরেক্ট হবে, তখন একটি সাধারণ ত্রুটি বার্তা প্রদর্শিত হবে।
ASP.Net Core তে আপনি কাস্টম ত্রুটি হ্যান্ডলিং Middleware তৈরি করতে পারেন যা অ্যাপ্লিকেশন প্রয়োগের সময় ত্রুটিগুলো ট্র্যাক এবং হ্যান্ডল করতে সহায়ক।
public class ErrorHandlingMiddleware
{
private readonly RequestDelegate _next;
public ErrorHandlingMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
try
{
await _next(context); // Call the next middleware
}
catch (Exception ex)
{
// Handle the exception
Console.WriteLine($"Exception caught: {ex.Message}");
context.Response.Redirect("/Home/Error");
}
}
}
এটি একটি কাস্টম মিথড, যা যখন কোনো ত্রুটি সনাক্ত করবে, তখন ত্রুটি বার্তা লগ করে এবং ব্যবহারকারীকে Error পৃষ্ঠায় রিডাইরেক্ট করবে।
ASP.Net Core অ্যাপ্লিকেশনে Logging এবং Error Handling অত্যন্ত গুরুত্বপূর্ণ। Logging ব্যবহারে অ্যাপ্লিকেশনের কার্যকলাপ ট্র্যাক করা এবং ত্রুটি সনাক্তকরণ সহজ হয়, যখন Error Handling ব্যবহারকারীকে পরিষ্কারভাবে ত্রুটি বার্তা প্রদান করতে সাহায্য করে এবং অ্যাপ্লিকেশনকে স্থিতিশীল রাখে। ASP.Net Core তে এ দুটি বৈশিষ্ট্য সহজেই কনফিগার এবং ব্যবহার করা যায়।
Error handling হল একটি গুরুত্বপূর্ণ অংশ যা অ্যাপ্লিকেশন তৈরির সময় সঠিকভাবে ব্যবহার করা উচিত। এটি অ্যাপ্লিকেশনের অপ্রত্যাশিত ত্রুটিগুলো (error) বা ব্যতিক্রম (exception) সনাক্ত করে এবং তা নিয়ন্ত্রণের মাধ্যমে ব্যবহারকারীর অভিজ্ঞতা উন্নত করে। ASP.Net এ ত্রুটি পরিচালনা না করার ফলে অ্যাপ্লিকেশনটি ব্যবহারকারীকে অবাঞ্ছিত ত্রুটি বার্তা বা সিস্টেম ক্র্যাশ দেখাতে পারে, যা ব্যবহারকারীর প্রতি নেতিবাচক প্রভাব ফেলে। সঠিকভাবে ত্রুটি পরিচালনা করা একটি নিরাপদ, স্থিতিশীল এবং ব্যবহারকারী-বান্ধব অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে।
একটি অ্যাপ্লিকেশন যেখানে ত্রুটি বা ব্যতিক্রম (exception) সঠিকভাবে হ্যান্ডেল করা হয়, সেখানে ব্যবহারকারীকে অবাঞ্ছিত ত্রুটি বার্তা বা অপ্রত্যাশিত পরিস্থিতির মুখোমুখি হতে হয় না। এর পরিবর্তে, ব্যবহারকারীকে একটি পরিষ্কার এবং সহায়ক বার্তা দেওয়া হয় যা তাকে কীভাবে সমস্যা সমাধান করতে হবে বা পরবর্তী পদক্ষেপ নিতে হবে, তা নির্দেশ করে।
ত্রুটি ব্যবস্থাপনা সঠিকভাবে না করা হলে, অ্যাপ্লিকেশন ত্রুটির সময় বিশদ ত্রুটি বার্তা দেখাতে পারে, যা হ্যাকারদের কাছে অ্যাপ্লিকেশনের দুর্বলতা বা সিস্টেমের ভিতরের কাঠামো সম্পর্কে তথ্য সরবরাহ করতে পারে। সঠিক error handling দিয়ে এই ঝুঁকি কমানো সম্ভব।
যখন অ্যাপ্লিকেশন কোনো অপ্রত্যাশিত ত্রুটির সম্মুখীন হয়, তখন এটি হ্যান্ডলিং না করলে অ্যাপ্লিকেশন ক্র্যাশ হতে পারে, যা ব্যবহারকারীদের কাছে অ্যাপ্লিকেশনটি অস্থির এবং অদক্ষ হিসেবে প্রতিস্থাপন করে। Error handling ঠিকভাবে করা হলে অ্যাপ্লিকেশনটি স্থিতিশীল থাকে এবং ত্রুটির সময়ে সঠিকভাবে চলতে থাকে।
ASP.Net এ ত্রুটি পরিচালনা করার জন্য বিভিন্ন পদ্ধতি রয়েছে। প্রধানত দুটি পদ্ধতি ব্যবহৃত হয়: Global Error Handling এবং Local Error Handling।
Global error handling এর মাধ্যমে, আপনি অ্যাপ্লিকেশনের সমস্ত অংশে ত্রুটি পরিচালনা করতে পারেন। এটি একটি কেন্দ্রীয় জায়গা, যেখানে অ্যাপ্লিকেশন চলাকালীন কোন ধরণের অপ্রত্যাশিত ত্রুটি ঘটলে তা সঠিকভাবে হ্যান্ডেল করা হয়।
ASP.Net Core এ Global Error Handling কনফিগার করার জন্য UseExceptionHandler
এবং UseDeveloperExceptionPage
মেথড ব্যবহার করা হয়।
Startup.cs এ Global error handling কনফিগার করুন:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage(); // ডেভেলপমেন্ট এনভায়রনমেন্টে ডেভেলপার এক্সেপশন পেজ দেখাবে
}
else
{
app.UseExceptionHandler("/Home/Error"); // প্রোডাকশনে সকল ত্রুটি হ্যান্ডেল করার জন্য কাস্টম পেজ
app.UseHsts(); // HTTPS এর জন্য
}
app.UseRouting();
// অন্যান্য মিডলওয়ার কনফিগারেশন
}
এখানে, UseExceptionHandler("/Home/Error")
নির্দেশ দেয় যে, যখন কোনো ত্রুটি ঘটে, তখন ব্যবহারকারীকে /Home/Error
রুটে রিডিরেক্ট করা হবে।
কোনো ত্রুটি ঘটলে, আপনি একটি কাস্টম error পেজ তৈরি করতে পারেন যা ব্যবহারকারীকে সহায়ক বার্তা দেখাবে।
public class HomeController : Controller
{
public IActionResult Error()
{
return View(); // Error.cshtml পেজে ত্রুটির বার্তা দেখাবে
}
}
লোকাল error handling ব্যবহার করে আপনি নির্দিষ্ট কন্ট্রোলার বা অ্যাকশন মেথডের মধ্যে ত্রুটিগুলো ধরতে পারেন এবং সেগুলোকে হ্যান্ডেল করতে পারেন।
যখন কোনো নির্দিষ্ট ব্লক বা অংশে ত্রুটি ঘটার সম্ভাবনা থাকে, সেখানে try-catch ব্লক ব্যবহার করা হয়।
public IActionResult Index()
{
try
{
// কিছু কোড যা ত্রুটি ঘটাতে পারে
var result = 10 / 0;
}
catch (DivideByZeroException ex)
{
// ত্রুটি ধরা হলে
ViewBag.ErrorMessage = "অনুগ্রহ করে শূন্য দিয়ে ভাগ করবেন না!";
return View("Error");
}
}
এখানে, try
ব্লকে একটি সম্ভাব্য ত্রুটি (DivideByZeroException) ধরা হয় এবং যদি ত্রুটি ঘটে, তবে catch ব্লকে সেগুলো হ্যান্ডেল করা হয় এবং ব্যবহারকারীকে উপযুক্ত ত্রুটি বার্তা দেখানো হয়।
ASP.Net অ্যাপ্লিকেশনে একটি কাস্টম error পেজ তৈরি করলে, ব্যবহারকারী যখন কোনো ত্রুটির সম্মুখীন হবে, তখন তিনি একটি প্রফেশনাল এবং সহায়ক ত্রুটি বার্তা দেখতে পাবেন।
@{
ViewData["Title"] = "Error";
}
<h1>Oops! Something went wrong.</h1>
<p>@ViewBag.ErrorMessage</p>
এই পেজে আপনি ত্রুটি সম্পর্কিত সহায়ক বার্তা প্রদান করতে পারেন।
ASP.Net অ্যাপ্লিকেশনে ত্রুটির লগিং করা খুবই গুরুত্বপূর্ণ, যাতে ডেভেলপাররা ত্রুটির উৎস খুঁজে পেতে এবং সমাধান করতে সক্ষম হন। ASP.Net Core এ ILogger ব্যবহার করে আপনি ত্রুটির লগ রাখতে পারেন।
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
try
{
// কিছু কোড যা ত্রুটি ঘটাতে পারে
}
catch (Exception ex)
{
_logger.LogError(ex, "An error occurred in Index action.");
return View("Error");
}
}
}
এখানে, ILogger
ত্রুটির লগ রেখে সহায়ক তথ্য সরবরাহ করতে সাহায্য করে।
ASP.Net অ্যাপ্লিকেশনে Error Handling অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি অ্যাপ্লিকেশনের স্থিতিশীলতা, নিরাপত্তা এবং ব্যবহারকারীর অভিজ্ঞতা বজায় রাখে। সঠিকভাবে ত্রুটি হ্যান্ডেল করলে আপনি ব্যবহারকারীদের প্রফেশনাল অভিজ্ঞতা দিতে পারেন এবং ত্রুটির উৎস দ্রুত চিহ্নিত করতে পারেন। Global Error Handling, Local Error Handling, Logging, এবং Custom Error Pages ব্যবহার করে ASP.Net অ্যাপ্লিকেশনকে আরও নিরাপদ ও শক্তিশালী করা সম্ভব।
Custom Error পৃষ্ঠা ব্যবহারকারীদেরকে অ্যাপ্লিকেশনের ত্রুটির কারণে তারা যেখানে পৌঁছাতে পারেন, সেখানে একটি ব্যবহারকারী-বান্ধব এবং কাস্টমাইজড পৃষ্ঠা দেখানোর জন্য ব্যবহৃত হয়। ASP.Net Core অ্যাপে, আপনি Custom Error পৃষ্ঠা তৈরি করতে পারেন যা ব্যবহারকারীদেরকে একটি সঠিক ত্রুটি বার্তা প্রদর্শন করবে এবং অ্যাপ্লিকেশনটি বন্ধ না করে তাদেরকে আরও সহায়তা করবে।
ASP.Net Core অ্যাপে Custom Error পৃষ্ঠা তৈরি করার জন্য কয়েকটি ধাপ অনুসরণ করতে হবে।
Startup.cs ফাইলে Configure
মেথডে UseExceptionHandler
এবং UseStatusCodePagesWithReExecute
মেথডগুলো ব্যবহার করে কাস্টম ত্রুটি পৃষ্ঠা কনফিগার করতে হবে।
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage(); // ডেভেলপমেন্টে ত্রুটির ডিটেইল দেখাবে
}
else
{
// প্রোডাকশনে কাস্টম ত্রুটি পৃষ্ঠা
app.UseExceptionHandler("/Home/Error"); // সব ত্রুটি হ্যান্ডেল করবে
app.UseHsts(); // HTTP Strict Transport Security (HSTS)
}
// 404 ত্রুটির জন্য কাস্টম পৃষ্ঠা
app.UseStatusCodePagesWithReExecute("/Home/StatusCode", "?code={0}");
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
এখানে:
UseExceptionHandler("/Home/Error")
: এটি সমস্ত এক্সেপশন হ্যান্ডেল করবে এবং ইউজারকে /Home/Error
রাউটে রিডাইরেক্ট করবে।UseStatusCodePagesWithReExecute("/Home/StatusCode", "?code={0}")
: এই কোডটি HTTP স্ট্যাটাস কোড অনুযায়ী কাস্টম পৃষ্ঠা রেন্ডার করতে ব্যবহার করা হয় (যেমন, 404 বা 500 ত্রুটি)।এখন, আপনাকে HomeController বা যেকোনো অন্য কন্ট্রোলারে ত্রুটি হ্যান্ডলিং এর জন্য একটি অ্যাকশন মেথড তৈরি করতে হবে।
public class HomeController : Controller
{
// Error পৃষ্ঠা
public IActionResult Error()
{
return View();
}
// Status Code (404 বা 500) এর জন্য কাস্টম পৃষ্ঠা
public IActionResult StatusCode(int code)
{
if (code == 404)
{
ViewData["ErrorMessage"] = "The page you are looking for might have been moved or deleted.";
}
else if (code == 500)
{
ViewData["ErrorMessage"] = "Oops! Something went wrong on our server. Please try again later.";
}
return View();
}
}
এখানে:
Error()
অ্যাকশনটি সকল এক্সেপশন হ্যান্ডলিংয়ের জন্য ব্যবহৃত হবে।StatusCode(int code)
অ্যাকশনটি কাস্টম স্ট্যাটাস কোড (যেমন 404, 500) এর জন্য ব্যবহার করা হয়।এখন, আপনাকে Views/Home/Error.cshtml এবং Views/Home/StatusCode.cshtml ফাইল তৈরি করতে হবে, যেখানে আপনি কাস্টম ত্রুটি বার্তা এবং পৃষ্ঠা উপস্থাপন করবেন।
<!-- Views/Home/Error.cshtml -->
@{
ViewData["Title"] = "Error";
}
<h1>Error Occurred</h1>
<p>Sorry, an unexpected error occurred. Please try again later.</p>
<!-- Views/Home/StatusCode.cshtml -->
@{
ViewData["Title"] = "Error";
}
<h1>@ViewData["ErrorMessage"]</h1>
<p>The page you were looking for might have been moved or deleted.</p>
UseStatusCodePagesWithReExecute
এর মাধ্যমে আপনি 404 এবং 500 এর মতো ত্রুটি কোডের জন্য কাস্টম পৃষ্ঠা তৈরি করতে পারেন।
আপনি যদি 404 ত্রুটি কোডের জন্য কাস্টম পৃষ্ঠা তৈরি করতে চান, তাহলে StatusCode.cshtml
ফাইলের মধ্যে 404 এর জন্য একটি বিশেষ বার্তা রাখতে পারেন।
500 ত্রুটি (Server Error) কোডের জন্যও আপনি বিশেষভাবে কাস্টম বার্তা বা তথ্য প্রদর্শন করতে পারেন, যাতে ব্যবহারকারী বুঝতে পারে যে এটি একটি সার্ভার সমস্যা।
ASP.Net Core-এ Custom Error পৃষ্ঠা তৈরি করা খুবই সহজ এবং এটি আপনার অ্যাপ্লিকেশনকে ব্যবহারকারী-বান্ধব করে তোলে। Startup.cs ফাইলে middleware কনফিগার করে এবং Controller ও Views তে ত্রুটি বার্তা সাজিয়ে, আপনি কাস্টম 404, 500 ত্রুটি এবং অন্যান্য ত্রুটি পৃষ্ঠা তৈরি করতে পারবেন। এর মাধ্যমে ব্যবহারকারীদের ভালো অভিজ্ঞতা প্রদান করা সম্ভব।
Exception Handling Middleware হলো ASP.Net Core অ্যাপ্লিকেশনে ইস্যু বা ত্রুটি (exception) ধরার এবং যথাযথভাবে প্রতিক্রিয়া জানানোর একটি মেকানিজম। এটি ডেভেলপারদের সুবিধার্থে বিভিন্ন ধরনের ত্রুটি যেমন, সিস্টেম ত্রুটি (system errors), ইনপুট ভুল ত্রুটি (input validation errors), এবং অন্যান্য ব্যতিক্রম (exceptions) সমাধান করতে সাহায্য করে।
ASP.Net Core এ Middleware হলো পিপলাইন স্তরের কম্পোনেন্ট যা HTTP রিকোয়েস্ট প্রসেসিংয়ের মধ্যবর্তী পর্যায়ে কাজ করে। Exception Handling Middleware এর মাধ্যমে অ্যাপ্লিকেশন উন্নত এবং নির্ভরযোগ্যভাবে কাজ করতে পারে।
অ্যাপ্লিকেশনে ত্রুটি ঘটলে যদি ত্রুটির সঠিকভাবে হ্যান্ডেলিং না করা হয়, তাহলে:
Exception Handling Middleware এই ধরনের সমস্যা সমাধান করে এবং ত্রুটি ঘটলে ব্যবহারকারী বা ডেভেলপারকে নির্দিষ্ট ভাবে জানায়, যাতে অ্যাপ্লিকেশন সঠিকভাবে চলতে পারে।
ASP.Net Core অ্যাপ্লিকেশনে Exception Handling Middleware সেটআপ করতে, Startup.cs
ফাইলে Configure
মেথডে UseExceptionHandler
অথবা UseDeveloperExceptionPage
মেথড ব্যবহার করতে হয়।
UseExceptionHandler
এর মাধ্যমে আপনি একটি কাস্টম ত্রুটি পৃষ্ঠা (error page) নির্দিষ্ট করতে পারেন। এটি প্রোডাকশন পরিবেশে ত্রুটি হ্যান্ডল করার জন্য আদর্শ।
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage(); // ডেভেলপমেন্ট পরিবেশে ডেভেলপার ত্রুটি পৃষ্ঠা
}
else
{
app.UseExceptionHandler("/Home/Error"); // প্রোডাকশনে কাস্টম ত্রুটি পৃষ্ঠা
app.UseHsts(); // HSTS কনফিগারেশন
}
// অন্যান্য Middleware
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllers();
}
এখানে, যদি অ্যাপ্লিকেশন ডেভেলপমেন্ট মোডে থাকে, তবে UseDeveloperExceptionPage()
ব্যবহার করা হয়, যা ত্রুটির বিস্তারিত বার্তা দেখায়। তবে যদি প্রোডাকশন পরিবেশে অ্যাপ্লিকেশন চলছে, তবে UseExceptionHandler("/Home/Error")
ব্যবহার করা হবে, যেখানে /Home/Error
পৃষ্ঠায় একটি কাস্টম ত্রুটি বার্তা দেখানো হবে।
ডেভেলপমেন্ট পরিবেশে UseDeveloperExceptionPage ব্যবহার করা হয়, যা ত্রুটির বিস্তারিত লগ এবং স্ট্যাক ট্রেস প্রদর্শন করে। এটি ডেভেলপারদের সমস্যা শনাক্ত করতে সহায়তা করে। তবে প্রোডাকশনে এটি ব্যবহৃত হলে নিরাপত্তার জন্য এটি বিপদজনক হতে পারে, কারণ এটি বিস্তারিত ত্রুটি বার্তা প্রকাশ করে।
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage(); // ডেভেলপমেন্টে ত্রুটি স্ট্যাক ট্রেস সহ দেখাবে
}
else
{
app.UseExceptionHandler("/Home/Error"); // প্রোডাকশনে কাস্টম ত্রুটি পৃষ্ঠা
}
// অন্যান্য Middleware
}
UseExceptionHandler এর মাধ্যমে কাস্টম ত্রুটি পৃষ্ঠা তৈরি করা যায়, যেখানে আপনি ব্যবহারকারীর জন্য একটি সাধারণ ত্রুটি বার্তা এবং বিকল্প পথ প্রদান করতে পারেন। যেমন একটি Error পৃষ্ঠা তৈরি করা:
public class HomeController : Controller
{
public IActionResult Error()
{
return View(); // একটি কাস্টম error view রেন্ডার করবে
}
}
@{
Layout = "_Layout";
}
<h1>Something went wrong!</h1>
<p>Sorry, there was a problem with your request. Please try again later.</p>
এখানে, /Home/Error
পৃষ্ঠাটি ব্যবহারকারীদের একটি সাধারণ ত্রুটি বার্তা দেখাবে।
ASP.Net Core অ্যাপ্লিকেশনে Logging সহ Exception Handling আরও কার্যকরী করা যেতে পারে। আপনি ত্রুটির লগ রাখতে পারেন, যাতে ডেভেলপাররা ত্রুটির বিশ্লেষণ করতে পারে এবং সমস্যাগুলি সমাধান করতে পারে।
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger<Startup> logger)
{
app.UseExceptionHandler(errorApp =>
{
errorApp.Run(async context =>
{
var exceptionHandlerPathFeature = context.Features.Get<IExceptionHandlerPathFeature>();
var exception = exceptionHandlerPathFeature?.Error;
logger.LogError($"Exception occurred: {exception?.Message}");
context.Response.Redirect("/Home/Error");
});
});
}
এখানে, ILogger ব্যবহার করে ত্রুটি লগ করা হয়েছে এবং তারপর ব্যবহারকারীকে /Home/Error
পৃষ্ঠায় রিডাইরেক্ট করা হয়েছে।
Exception Handling Middleware ASP.Net Core অ্যাপ্লিকেশনগুলিতে ত্রুটি পরিচালনার জন্য একটি গুরুত্বপূর্ণ অংশ। এটি ত্রুটির কারণে অ্যাপ্লিকেশন ক্র্যাশ হওয়া আটকায় এবং ব্যবহারকারীকে সঠিকভাবে ত্রুটি বার্তা প্রদর্শন করে। UseExceptionHandler
এবং UseDeveloperExceptionPage
মেথডের মাধ্যমে আপনি ত্রুটি হ্যান্ডলিং কাস্টমাইজ করতে পারেন, এবং লগিং ব্যবহারের মাধ্যমে ত্রুটির বিশ্লেষণ করতে পারেন।
ASP.Net অ্যাপ্লিকেশন ডেভেলপ করার সময় Logging এবং Debugging দুটি অত্যন্ত গুরুত্বপূর্ণ টেকনিক, যেগুলোর সাহায্যে কোডের ত্রুটি শনাক্তকরণ এবং সঠিক কার্যকারিতা নিশ্চিত করা যায়। এগুলি আপনার অ্যাপ্লিকেশনের পারফরম্যান্স মনিটর করতে এবং ত্রুটিগুলি দ্রুত সমাধান করতে সাহায্য করে।
Logging হল একটি প্রক্রিয়া যার মাধ্যমে অ্যাপ্লিকেশন চলাকালীন সময়ে বিভিন্ন ইভেন্ট, ত্রুটি, এবং স্টেটাস সম্পর্কে তথ্য সংরক্ষণ করা হয়। এটি ডেভেলপারদের সিস্টেমের আচরণ এবং ত্রুটিগুলি ট্র্যাক করার সুযোগ প্রদান করে, যাতে কোডে কোন সমস্যা হলে তা দ্রুত চিহ্নিত এবং সমাধান করা যায়।
ASP.Net এ Logging ব্যবহারের জন্য ILogger ইন্টারফেস ব্যবহার করা হয়। ASP.Net Core এতে বিল্ট-ইন লোগিং সুবিধা প্রদান করে, যা বিভিন্ন ধরনের লগ স্তরের সমর্থন করে: Trace, Debug, Information, Warning, Error, এবং Critical।
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddLogging();
}
public void Configure(IApplicationBuilder app, ILogger<Startup> logger)
{
logger.LogInformation("Application started");
app.Run(async (context) =>
{
logger.LogInformation("Request received at: " + DateTime.Now);
await context.Response.WriteAsync("Hello World!");
});
}
}
public class SampleController : Controller
{
private readonly ILogger<SampleController> _logger;
public SampleController(ILogger<SampleController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.LogTrace("This is a trace message.");
_logger.LogDebug("This is a debug message.");
_logger.LogInformation("This is an info message.");
_logger.LogWarning("This is a warning message.");
_logger.LogError("This is an error message.");
_logger.LogCritical("This is a critical error message.");
return View();
}
}
এখানে ILogger এর মাধ্যমে অ্যাপ্লিকেশনটি বিভিন্ন ধরনের লগ স্তরের তথ্য সংরক্ষণ করবে। এগুলি অ্যাপ্লিকেশনের বিভিন্ন অবস্থায় কী ঘটছে তা বিশ্লেষণ করতে সাহায্য করবে।
Debugging হল একটি প্রক্রিয়া যার মাধ্যমে ডেভেলপাররা অ্যাপ্লিকেশন কোডে সমস্যা সনাক্ত এবং সংশোধন করেন। এটি কোডের মধ্যে ভুল এবং লজিক্যাল ত্রুটি খুঁজে বের করার জন্য ব্যবহৃত হয়। ডিবাগিং করার মাধ্যমে আপনি কোডের অভ্যন্তরীণ কার্যক্রম পর্যবেক্ষণ করতে পারেন এবং তা সঠিকভাবে কার্যকর করতে পারেন।
ASP.Net এ ডিবাগিং করার জন্য বেশ কিছু সাধারণ টেকনিক এবং টুলস রয়েছে। এর মধ্যে Visual Studio অন্যতম জনপ্রিয় এবং শক্তিশালী ডিবাগিং টুল।
Breakpoints ব্যবহার করে কোডের নির্দিষ্ট লাইনে execution থামিয়ে সেটি পর্যবেক্ষণ করা যায়। Visual Studio তে, যেকোনো লাইনে ব্রেকপয়েন্ট সেট করা যায়, এবং সেই লাইনে কোড এক্সিকিউশন থামিয়ে ভ্যারিয়েবলগুলির মান এবং কোডের কার্যক্রম পর্যবেক্ষণ করা যায়।
Visual Studio তে Immediate Window ব্যবহার করে আপনি কোড এক্সিকিউশন চলাকালীন সময়ে সরাসরি কমান্ড লিখে ভ্যারিয়েবল অথবা এক্সপ্রেশনগুলির মান পরীক্ষা করতে পারেন। এটি ডিবাগিংয়ের সময় খুবই কার্যকরী।
ডিবাগিংয়ের পাশাপাশি Logging ব্যবহার করলে আপনি অ্যাপ্লিকেশন চলাকালীন সময়ে বিভিন্ন ইনফরমেশন দেখতে পাবেন। এটি কোডের কার্যকারিতা এবং সমস্যা খুঁজে বের করতে সহায়ক।
Logging এবং Debugging হল ASP.Net অ্যাপ্লিকেশনের উন্নত মান বজায় রাখতে এবং সমস্যা সমাধানে অত্যন্ত গুরুত্বপূর্ণ। ILogger এর মাধ্যমে অ্যাপ্লিকেশনের বিভিন্ন ইভেন্ট, ত্রুটি, এবং পারফরম্যান্স সম্পর্কিত তথ্য সংগ্রহ করা যায়, যা অ্যাপ্লিকেশনের নিরবচ্ছিন্ন কার্যক্ষমতা নিশ্চিত করতে সাহায্য করে। ডিবাগিংয়ের মাধ্যমে কোডের ত্রুটি খুঁজে বের করে তা সমাধান করা যায়, এবং অ্যাপ্লিকেশনটি আরও স্থিতিশীল ও কার্যকরী হয়।
লগিং হল একটি অত্যন্ত গুরুত্বপূর্ণ কার্যক্রম যেটি অ্যাপ্লিকেশনের কর্মক্ষমতা মনিটর করার জন্য ব্যবহৃত হয়। ASP.Net অ্যাপ্লিকেশনগুলিতে ডিফল্ট লগিং ফিচার ব্যবহারের পাশাপাশি থার্ড-পার্টি লগিং টুলস যেমন NLog এবং Serilog ব্যবহার করা হয়। এগুলি আরো উন্নত লগিং ফিচার প্রদান করে, যেমন আরও ডিটেইলড লগিং, ফাইল/ডাটাবেসে লগ সংরক্ষণ, এবং লগের ফিল্টারিং।
NLog হল একটি শক্তিশালী এবং কনফিগারেবল লগিং ফ্রেমওয়ার্ক যা ASP.Net অ্যাপ্লিকেশনে লগিং সম্পাদন করতে ব্যবহৃত হয়। এটি বিভিন্ন আউটপুট টার্গেটে লগ পাঠাতে সক্ষম, যেমন ফাইল, ডাটাবেস, কনসোল, ইত্যাদি।
NuGet থেকে NLog ইনস্টল করতে পারেন:
Install-Package NLog.Web.AspNetCore
NLog কনফিগারেশন ফাইল তৈরি করা:
nlog.config
নামে একটি কনফিগারেশন ফাইল তৈরি করুন এবং এটি wwwroot ফোল্ডারে রাখুন।উদাহরণ nlog.config
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<targets>
<target name="logfile" xsi:type="File" fileName="logs/logfile.txt" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logfile" />
</rules>
</configuration>
NLog ব্যবহার করা:
ILogger
ইনজেক্ট করুন:private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();
public IActionResult Index()
{
Logger.Info("This is an info log message.");
return View();
}
Serilog একটি আধুনিক, কাঠামোগত লগিং টুল যা JSON বা অন্যান্য কাঠামোগত ফরম্যাটে লগ রেকর্ড করতে সক্ষম। এটি এসিনক্রোনাস লগিং সমর্থন করে এবং প্রাথমিকভাবে খুব ভাল কনফিগারেশন সক্ষমতা প্রদান করে।
NuGet থেকে Serilog এবং এর ASP.Net Core ইন্টিগ্রেশন প্যাকেজ ইনস্টল করুন:
Install-Package Serilog.AspNetCore
Install-Package Serilog.Sinks.File
Serilog কনফিগারেশন:
Program.cs
অথবা Startup.cs
ফাইলে Serilog কনফিগারেশন করুন:using Serilog;
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog((context, config) => config
.WriteTo.Console()
.WriteTo.File("logs/logfile.txt", rollingInterval: RollingInterval.Day)
.ReadFrom.Configuration(context.Configuration));
Serilog ব্যবহার করা:
ILogger
ইঞ্জেক্ট করে লগিং ব্যবহার করুন:private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.LogInformation("This is an information log.");
return View();
}
ফিচার | NLog | Serilog |
---|---|---|
কনফিগারেশন | XML ফাইল | কোড বা JSON ফাইল |
আউটপুট টার্গেট | ফাইল, কনসোল, ডাটাবেস, ইত্যাদি | ফাইল, কনসোল, ডাটাবেস, ক্লাউড |
কাঠামোগত লগিং | Limited | অত্যন্ত শক্তিশালী এবং কাঠামোগত |
এসিনক্রোনাস সাপোর্ট | না | হ্যাঁ |
লাইটওয়েট | হ্যাঁ | হ্যাঁ |
NLog এবং Serilog উভয়ই শক্তিশালী থার্ড-পার্টি লগিং টুলস, তবে Serilog কাঠামোগত লগিং এবং JSON ফরম্যাটে লগ রেকর্ড করার জন্য বেশি জনপ্রিয়। NLog একটু পুরোনো এবং কনফিগারেশন ফাইলের মাধ্যমে কাজ করার ক্ষেত্রে সহজ হতে পারে। আপনার প্রয়োজন অনুসারে, দুটি লাইব্রেরি থেকেই যে কোন একটি ব্যবহার করতে পারেন, তবে Serilog সাধারণত আধুনিক ASP.Net অ্যাপ্লিকেশনগুলির জন্য বেশি উপযুক্ত।
Read more