Microsoft Technologies Log4net এবং NHibernate Integration গাইড ও নোট

296

NHibernate এবং Log4net একত্রিত করে আপনি আপনার ডেটাবেস অপারেশনগুলির লগিং করতে পারেন, যা উন্নত ডিবাগিং এবং ট্রাবলশুটিংয়ের জন্য খুবই কার্যকর। NHibernate ডেটাবেস অ্যাক্সেসের জন্য একটি জটিল এবং শক্তিশালী ORM (Object-Relational Mapping) টুল, এবং Log4net একটি জনপ্রিয় লগিং ফ্রেমওয়ার্ক যা বিভিন্ন লেভেল এবং আউটপুট স্ট্রিমে লগ মেসেজগুলো সংরক্ষণ করতে সক্ষম।

নিচে Log4net এবং NHibernate ইন্টিগ্রেট করার একটি বিস্তারিত উদাহরণ দেওয়া হলো।


Log4net কনফিগারেশন

প্রথমে আপনাকে Log4net কনফিগার করতে হবে। এটি সাধারণত একটি XML কনফিগারেশন ফাইল অথবা প্রোগ্রাম্যাটিক কনফিগারেশন দ্বারা করা হয়। এখানে XML কনফিগারেশন দিয়ে শুরু করা হলো:

log4net.config ফাইল:

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
    </layout>
  </appender>

  <root>
    <level value="DEBUG" />
    <appender-ref ref="ConsoleAppender" />
  </root>
</log4net>

এখানে:

  • ConsoleAppender ব্যবহার করে কনসোলে লগ মেসেজ প্রদর্শন করা হচ্ছে।
  • PatternLayout লগ মেসেজের ফরম্যাট কনফিগার করে।

Log4net ইনিশিয়ালাইজ করা

কোডে log4net ইনিশিয়ালাইজ করার জন্য, আপনাকে Assembly-তে log4net.Config.XmlConfigurator অ্যাট্রিবিউট যোগ করতে হবে।

using log4net;
using log4net.Config;

[assembly: XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

public class Program
{
    private static readonly ILog log = LogManager.GetLogger(typeof(Program));

    public static void Main(string[] args)
    {
        log.Debug("This is a debug message");
        log.Info("This is an info message");
        log.Warn("This is a warning message");
        log.Error("This is an error message");
    }
}

এখানে:

  • XmlConfigurator অ্যাট্রিবিউট ব্যবহার করে Log4net কনফিগারেশন ফাইলটি লোড করা হচ্ছে।
  • ILog ইন্টারফেস ব্যবহার করে লগিং করা হচ্ছে।

NHibernate এবং Log4net ইন্টিগ্রেট করা

NHibernate এ Log4net ইন্টিগ্রেট করতে, আপনি NHibernate-এর লগিং মেকানিজম ব্যবহার করতে পারেন যা ILogger ইন্টারফেসের মাধ্যমে Log4net এর লগিং সিস্টেমকে প্রসঙ্গায়িত করে।

NHibernate-এর সাথে Log4net কনফিগারেশন

NHibernate এর লগিং সিস্টেম কনফিগার করার জন্য, আপনাকে log4net এবং NHibernate এর লগিং সিস্টেম একত্রিত করতে হবে। log4net কে NHibernate এর লগিং ফ্রেমওয়ার্ক হিসেবে ব্যবহার করার জন্য log4net.config ফাইলের মধ্যে log4net লোগার সেট করতে হবে।

NHibernate কনফিগারেশন

using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate;
using NHibernate.Cfg;
using log4net;

public class NHibernateHelper
{
    private static ISessionFactory sessionFactory;

    static NHibernateHelper()
    {
        // Fluent NHibernate Configuration with Log4net
        sessionFactory = Fluently.Configure()
            .Database(MsSqlConfiguration.MsSql2008.ConnectionString("your_connection_string"))
            .Mappings(m => m.FluentMappings.AddFromAssemblyOf<EmployeeMap>())
            .ExposeConfiguration(cfg =>
            {
                // Set NHibernate logger to use log4net
                cfg.SetProperty("hibernate.show_sql", "true");
                cfg.SetProperty("hibernate.format_sql", "true");

                // Register log4net with NHibernate logging system
                cfg.SetProperty("hibernate.logger", "log4net");
            })
            .BuildSessionFactory();
    }

    public static ISession OpenSession()
    {
        return sessionFactory.OpenSession();
    }
}

এখানে:

  • ExposeConfiguration ব্যবহার করে NHibernate কনফিগারেশন এক্সপোজ করা হচ্ছে।
  • hibernate.logger প্রপার্টি সেট করা হয়েছে যাতে NHibernate Log4net ব্যবহার করে।

NHibernate লগিং উদাহরণ

এখন যখন NHibernate কোনো SQL এক্সিকিউট করবে, তখন সেটি Log4net এর মাধ্যমে কনসোলে লগ হবে। আপনি নিম্নলিখিত পদ্ধতিতে লগ দেখতে পাবেন:

using (var session = NHibernateHelper.OpenSession())
{
    var employees = session.CreateQuery("from Employee").List<Employee>();
    foreach (var employee in employees)
    {
        Console.WriteLine(employee.Name);
    }
}

এখানে:

  • Session.CreateQuery ব্যবহার করে NHibernate কুইরি এক্সিকিউট করা হচ্ছে, এবং যেহেতু NHibernate কনফিগারেশনে Log4net যোগ করা হয়েছে, সমস্ত SQL লগিং কনসোলে দেখানো হবে।

Log4net এবং NHibernate Integration এর সুবিধা

  • ডিবাগিং সহজ করা: NHibernate এর কুইরিগুলোর লগিং আপনার ডিবাগিং প্রক্রিয়াকে আরও সহজ করে। আপনি দেখতে পাবেন কোন SQL কুয়েরি এক্সিকিউট হচ্ছে এবং কীভাবে আপনার ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করা হচ্ছে।
  • পারফরম্যান্স মনিটরিং: Log4net দিয়ে আপনি SQL কুয়েরি এক্সিকিউশন টাইম লগ করতে পারেন, যা পারফরম্যান্স টিউনিংয়ে সহায়ক।
  • Error Tracking: আপনি NHibernate এর SQL এক্সিকিউশন ত্রুটি লগ করতে পারবেন, যা দ্রুত সমস্যা শনাক্ত করতে সাহায্য করবে।

এভাবে Log4net এবং NHibernate একত্রিত করে আপনি শক্তিশালী লগিং ফিচার অর্জন করতে পারেন, যা আপনাকে ডেটাবেস অ্যাক্সেস এবং ডিবাগিংয়ের জন্য আরও কার্যকর সরঞ্জাম সরবরাহ করবে।

Content added By
Promotion

Are you sure to start over?

Loading...