همانطور که در مطلب "
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
}
}
یا کلید NHibernate.SQL باید پردازش شود (جهت ثبت SQL های کوئریها) یا نوع NHibernate.Tool.hbm2ddl.SchemaExport جهت ثبت SQL ساخت ساختار جداول بانک اطلاعاتی باید بررسی گردد.
سورس کامل این کتابخانهی کوچک را
از اینجا میتوانید دریافت کنید. جهت استفاده از آن تنها کافی است چند سطر زیر به فایل app.config یا web.config برنامهی شما اضافه شوند:
<appSettings>
<add key="nhibernate-logger" value="NH3SQLLogger.LoggerFactory, NH3SQLLogger" />
</appSettings>
کلید nhibernate-logger ، به صورت مستقیم توسط NHibernate بررسی میشود و صرف نظر از اینکه از کدامیک از مشتقات NHibernate استفاده میکنید، با تمام آنها کار خواهد کرد.
لازم به ذکر است که اگر برنامهی شما از نوع ASP.NET است، این کتابخانه اطلاعات را در پوشهی استاندارد App_Data ثبت خواهد کرد؛ در غیراینصورت فایلها در کنار فایل اجرایی برنامه تشکیل خواهند شد.