اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
یک دقیقه
همانطور که در مطلب "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 ثبت خواهد کرد؛ در غیراینصورت فایلها در کنار فایل اجرایی برنامه تشکیل خواهند شد.