স্বাগতম! আজকে আমরা রিয়েল-টাইম লগ মনিটরিংয়ের জন্য অত্যন্ত চমৎকার এবং ইন্ডাস্ট্রিতে ব্যাপকভাবে ব্যবহৃত একটি টুল নিয়ে আলোচনা করব—Serilog Seq

আপনার Outline অনুযায়ী, আমরা এখন Section 20: Logging-এর একাদশ লেকচার “276. Serilog Seq”-এ আছি। এর আগে আমরা Console, File এবং MS SQL Server-এ লগ সেভ করা দেখেছি। কিন্তু ডেটাবেস বা ফাইল থেকে লগ খুঁজে বের করা একটু সময়সাপেক্ষ। আপনি যদি রিয়েল-টাইমে (লাইভ) দেখতে চান যে আপনার অ্যাপ্লিকেশনে কী কী রিকোয়েস্ট আসছে এবং কী লগ জেনারেট হচ্ছে, তার জন্য বেস্ট টুল হলো Seq

চলুন শুরু করা যাক!

📝 Short Summary for Quick Revision

  • What is Seq: Seq (উচ্চারণ “সিক”) হলো একটি রিয়েল-টাইম সার্চ এবং অ্যানালাইসিস সার্ভার, যা স্ট্রাকচার্ড লগের জন্য ব্যবহৃত হয়। এটি মূলত একটি ড্যাশবোর্ড বা মনিটরিং টুল।
  • How it works: Serilog HTTP রিকোয়েস্টের মাধ্যমে লগ মেসেজগুলো Seq সার্ভারে পাঠায় এবং Seq সেটি তার ড্যাশবোর্ডে লাইভ দেখায়।
  • Installation: এটি একটি থার্ড-পার্টি সফটওয়্যার (Datalust কোম্পানির তৈরি), যা আলাদাভাবে উইন্ডোজে ইন্সটল করতে হয় (ডিফল্ট পোর্ট 5341)।
  • NuGet Package: പ്രোজেক্টে Serilog.Sinks.Seq প্যাকেজটি ইন্সটল করতে হয়।
  • Configuration: appsettings.json-এ Sink হিসেবে Seq যুক্ত করতে হয় এবং serverUrl (যেমন: http://localhost:5341) দিয়ে দিতে হয়।
  • Live Tail: Seq ড্যাশবোর্ডে “Tail” বাটনে ক্লিক করলে রিয়েল-টাইমে নতুন লগগুলো একদম উপরের দিকে (Latest on top) আসতে থাকে।

🧠 Comprehensive Breakdown

এখানে আমরা লেকচারের প্রতিটি বিষয় বিস্তারিতভাবে আলোচনা করব এবং সাথে Code Implementation দেখব।

১. Seq কী এবং কেন এটি ব্যবহার করব? (Priority: 10/10)

Console বা ফাইলে লগ দেখলে অনেক সময় হাজার হাজার লাইনের মাঝে আসল Error বা ফ্লো বুঝতে কষ্ট হয়। Seq-এর সুবিধা: এটি একটি চমৎকার ওয়েব ইন্টারফেস (Monitoring tool) দেয়, যেখানে ডেভেলপাররা বসে লাইভ দেখতে পারেন যে কোন রিকোয়েস্ট আসছে, কোন মেথড কল হচ্ছে, এবং কোথায় Error হচ্ছে। এর সার্চিং এবং ফিল্টারিং সিস্টেম এতই পাওয়ারফুল যে, আপনি খুব সহজেই স্ট্রাকচার্ড ডেটা (যেমন: শুধুমাত্র 404 Status Code-এর লগ) বের করতে পারবেন।

২. Seq Software ইন্সটল করা (Priority: 9/10)

Seq যেহেতু একটি আলাদা সার্ভার হিসেবে কাজ করে, তাই প্রথমে এর সফটওয়্যারটি আপনার কম্পিউটারে ইন্সটল করতে হবে।

  • Download: https://datalust.co/seq লিংকে গিয়ে Windows-এর জন্য কারেন্ট ভার্সনটি ডাউনলোড করুন।
  • Install: সাধারণ উইন্ডোজ সফটওয়্যারের মতোই নেক্সট দিয়ে ইন্সটল করুন।
  • Launch: ইন্সটলেশন শেষে “Browse Seq” বাটনে ক্লিক করলে বা ব্রাউজারে http://localhost:5341 (এটি Seq-এর ডিফল্ট পোর্ট) টাইপ করলে ড্যাশবোর্ড ওপেন হবে।
  • Login: ডিফল্ট ইউজারনেম admin এবং পাসওয়ার্ড admin দিয়ে লগইন করুন।

৩. NuGet Package Installation (Priority: 10/10)

এখন আমাদের ASP.NET Core প্রজেক্টকে Seq-এর সাথে কানেক্ট করতে হবে। এর জন্য Visual Studio-এর NuGet Package Manager থেকে Serilog.Sinks.Seq প্যাকেজটি ইন্সটল করুন।

(VS Code ব্যবহারকারীদের জন্য Command:)

dotnet add package Serilog.Sinks.Seq
 

৪. appsettings.json Configuration (Priority: 10/10)

প্যাকেজ ইন্সটল করার পর, appsettings.json ফাইলে Seq-এর কনফিগারেশন যুক্ত করতে হবে।

Code Implementation:

{
  "Serilog": {
    "MinimumLevel": "Information",
    "Using": [
      "Serilog.Sinks.Console",
      "Serilog.Sinks.Seq" 
    ],
    "WriteTo": [
      {
        "Name": "Console"
      },
      {
        "Name": "Seq",
        "Args": {
          "serverUrl": "http://localhost:5341" 
        }
      }
    ]
  },
  "AllowedHosts": "*"
}
 

ব্যাখ্যা:

  • Using অ্যারেতে "Serilog.Sinks.Seq" যুক্ত করা হয়েছে।
  • WriteTo অ্যারেতে Name হিসেবে "Seq" এবং Args-এর ভেতরে "serverUrl" হিসেবে Seq সার্ভারের অ্যাড্রেসটি দেওয়া হয়েছে। (Serilog এই URL-এ HTTP POST রিকোয়েস্টের মাধ্যমে লগগুলো পাঠাবে)।

৫. Seq Dashboard-এ Live Monitoring (Priority: 10/10)

উপরের কনফিগারেশন করার পর আপনার অ্যাপ্লিকেশনটি রান করুন।

কীভাবে মনিটর করবেন?

  1. ব্রাউজারে Seq ড্যাশবোর্ডে (http://localhost:5341) যান।
  2. উপরের টুলবার থেকে “Events”-এ ক্লিক করুন এবং তারপর “Tail” বাটনে ক্লিক করুন (এটি কমলা রঙ হয়ে যাবে)।
  • Tail-এর অর্থ হলো, এটি নতুন কোনো লগ আসা মাত্রই পেজ রিফ্রেশ না করেই স্বয়ংক্রিয়ভাবে স্ক্রিনে দেখাবে।
  1. এখন আপনি দেখতে পাবেন আপনার Controller, Service এবং Repository-এর সমস্ত লগ রিয়েল-টাইমে এখানে চলে আসছে! লগগুলো ডিসেন্ডিং অর্ডারে (Descending order) থাকে, অর্থাৎ লেটেস্ট লগ সবার উপরে দেখায়।
  2. যেকোনো লগের ওপর ক্লিক করলে সেটি এক্সপান্ড (Expand) হবে এবং আপনি এর বিস্তারিত দেখতে পাবেন (যেমন: Connection ID, Status Code, Request Path ইত্যাদি)। ট্রেইনার দেখিয়েছেন যে কীভাবে favicon.ico-এর জন্য 404 Error এসেছে, যা Seq-এ খুব সুন্দরভাবে বোঝা যাচ্ছে।

🚀 Best Practices & .NET Modern Updates

Best Practices for Seq Logging:

  • API Key Authentication: প্রোডাকশনে কখনোই সিকিউরিটি ছাড়া Seq ওপেন রাখা উচিত নয়। Seq ড্যাশবোর্ড থেকে একটি “API Key” জেনারেট করে সেটি appsettings.json-এর Args-এ যুক্ত করা বেস্ট প্র্যাকটিস:
"Args": {
  "serverUrl": "http://your-production-seq-server:5341",
  "apiKey": "your-secret-api-key"
}
 
  • Enrichers: Seq-এর আসল ম্যাজিক হলো “Enrichers” (যা আপনারা সামনের লেকচারে শিখবেন)। এর মাধ্যমে আপনি লগের সাথে সার্ভারের নাম, ইউজারের আইডি ইত্যাদি ডায়নামিক ডেটা যুক্ত করতে পারেন, যা Seq-এ ফিল্টার করা খুব সহজ।

Modern .NET / Docker Updates: বর্তমান ইন্ডাস্ট্রিতে Seq-কে সরাসরি উইন্ডোজে ইন্সটল করার বদলে Docker কন্টেইনার হিসেবে রান করা সবচেয়ে বেশি জনপ্রিয়। এতে এনভায়রনমেন্ট সেটআপ অনেক ফাস্ট হয়।

Docker ব্যবহার করে এক লাইনে Seq রান করার কোড (Good to know):

docker run --name seq -d --restart unless-stopped -e ACCEPT_EULA=Y -p 5341:80 datalust/seq:latest
 

এটি উইন্ডোজ ইন্সটলেশনের মতোই সেম কাজ করবে, শুধু ব্যাকগ্রাউন্ডে ডকার দিয়ে চলবে।

Seq সত্যিই একটি গেম-চেঞ্জার টুল! সামনের লেকচারগুলোতে Seq-এর অ্যাডভান্সড ফিচারগুলো দেখে আপনি আরও অবাক হবেন।