在NHibernate中使用Enterprise Library日志应用程序块,可以通过以下步骤实现:
在项目中安装Enterprise Library日志应用程序块,可以使用NuGet包管理器。在包管理器控制台中输入以下命令:
Install-Package EnterpriseLibrary.Logging
在应用程序配置文件中添加Enterprise Library日志应用程序块的配置。配置示例如下:
<configSections>
<section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
</configSections>
<loggingConfiguration name="Logging Application Block" tracingEnabled="true" defaultCategory="General">
<listeners>
<add name="Rolling Flat File Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
fileName="trace.log" formatter="Text Formatter" rollInterval="Day" />
</listeners>
<formatters>
<add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
template="Timestamp: {timestamp}{newline}Message: {message}{newline}Category: {category}{newline}Priority: {priority}{newline}EventId: {eventid}{newline}Severity: {severity}{newline}Title:{title}{newline}Machine: {localMachine}{newline}App Domain: {localAppDomain}{newline}ProcessId: {localProcessId}{newline}Process Name: {localProcessName}{newline}Thread Name: {threadName}{newline}Win32 ThreadId:{win32ThreadId}{newline}Extended Properties: {dictionary({key} - {value}{newline})}"
name="Text Formatter" />
</formatters>
<categorySources>
<add switchValue="All" name="General">
<listeners>
<add name="Rolling Flat File Trace Listener" />
</listeners>
</add>
</categorySources>
<specialSources>
<allEvents switchValue="All" name="All Events" />
<notProcessed switchValue="All" name="Unprocessed Category" />
<errors switchValue="All" name="Logging Errors & Warnings">
<listeners>
<add name="Rolling Flat File Trace Listener" />
</listeners>
</errors>
</specialSources>
</loggingConfiguration>
在NHibernate中使用Enterprise Library日志应用程序块,需要创建一个实现ILogger接口的类,并在该类中使用Enterprise Library日志应用程序块记录日志。示例代码如下:
using System;
using System.Diagnostics;
using Microsoft.Practices.EnterpriseLibrary.Logging;
using NHibernate.Cfg;
using NHibernate.Tool.hbm2ddl;
public class NHibernateLogger : ILogger
{
private readonly LogWriter _logWriter;
public NHibernateLogger()
{
_logWriter = EnterpriseLibraryContainer.Current.GetInstance<LogWriter>();
}
public void Log(NHibernate.Log.NHibernateLogLevel logLevel, string message)
{
if (logLevel == NHibernate.Log.NHibernateLogLevel.Error || logLevel == NHibernate.Log.NHibernateLogLevel.Fatal)
{
_logWriter.Write(message, "NHibernate", TraceEventType.Error);
}
else if (logLevel == NHibernate.Log.NHibernateLogLevel.Warn)
{
_logWriter.Write(message, "NHibernate", TraceEventType.Warning);
}
else if (logLevel == NHibernate.Log.NHibernateLogLevel.Info)
{
_logWriter.Write(message, "NHibernate", TraceEventType.Information);
}
else if (logLevel == NHibernate.Log.NHibernateLogLevel.Debug)
{
_logWriter.Write(message, "NHibernate", TraceEventType.Verbose);
}
}
public bool IsEnabled(NHibernate.Log.NHibernateLogLevel logLevel)
{
return true;
}
}
在NHibernate的配置文件中,将日志记录器设置为使用刚刚创建的NHibernateLogger类。示例代码如下:
var configuration = new Configuration();
configuration.Configure();
configuration.SetProperty(NHibernate.Cfg.Environment.ShowSql, "true");
configuration.SetProperty(NHibernate.Cfg.Environment.FormatSql, "true");
configuration.SetProperty(NHibernate.Cfg.Environment.UseOuterJoin, "true");
configuration.SetProperty(NHibernate.Cfg.Environment.Log, "NHibernateLogger");
这样,NHibernate中的日志记录就会使用Enterprise Library日志
没有搜到相关的文章