همانطور كه در مطلب "NHibernate 3.0 و عدم وابستگي مستقيم به Log4Net" عنوان شد، از اينترفيس جديد IInternalLogger آن ميتوان جهت ثبت وقايع داخلي NHibernate استفاده كرد. اگر در اين بين صرفا بخواهيم SQL هاي توليدي را لاگ كنيم، خلاصهي آن به صورت زير خواهد بود:
public class LoggerFactory : ILoggerFactory
{
public IInternalLogger LoggerFor(System.Type type)
{
if (type == typeof(NHibernate.Tool.hbm2ddl.SchemaExport))
//log it
}
public IInternalLogger LoggerFor(string keyName)
{
if (keyName == "NHibernate.SQL")
//log it
}
}
سورس كامل اين كتابخانهي كوچك را از اينجا ميتوانيد دريافت كنيد. جهت استفاده از آن تنها كافي است چند سطر زير به فايل app.config يا web.config برنامهي شما اضافه شوند:
<appSettings>
<add key="nhibernate-logger" value="NH3SQLLogger.LoggerFactory, NH3SQLLogger" />
</appSettings>
كليد nhibernate-logger ، به صورت مستقيم توسط NHibernate بررسي ميشود و صرف نظر از اينكه از كداميك از مشتقات NHibernate استفاده ميكنيد، با تمام آنها كار خواهد كرد.
لازم به ذكر است كه اگر برنامهي شما از نوع ASP.NET است، اين كتابخانه اطلاعات را در پوشهي استاندارد App_Data ثبت خواهد كرد؛ در غيراينصورت فايلها در كنار فايل اجرايي برنامه تشكيل خواهند شد.