首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在NHibernate中使用Enterprise Library日志应用程序块

在NHibernate中使用Enterprise Library日志应用程序块,可以通过以下步骤实现:

  1. 安装Enterprise Library日志应用程序块:

在项目中安装Enterprise Library日志应用程序块,可以使用NuGet包管理器。在包管理器控制台中输入以下命令:

代码语言:txt
复制

Install-Package EnterpriseLibrary.Logging

代码语言:txt
复制
  1. 配置Enterprise Library日志应用程序块:

在应用程序配置文件中添加Enterprise Library日志应用程序块的配置。配置示例如下:

代码语言:xml
复制

<configSections>

代码语言:txt
复制
 <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">

代码语言:txt
复制
 <listeners>
代码语言:txt
复制
     <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"
代码语言:txt
复制
        listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
代码语言:txt
复制
        fileName="trace.log" formatter="Text Formatter" rollInterval="Day" />
代码语言:txt
复制
  </listeners>
代码语言:txt
复制
 <formatters>
代码语言:txt
复制
     <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
代码语言:txt
复制
        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})}"
代码语言:txt
复制
        name="Text Formatter" />
代码语言:txt
复制
  </formatters>
代码语言:txt
复制
 <categorySources>
代码语言:txt
复制
     <add switchValue="All" name="General">
代码语言:txt
复制
       <listeners>
代码语言:txt
复制
           <add name="Rolling Flat File Trace Listener" />
代码语言:txt
复制
        </listeners>
代码语言:txt
复制
     </add>
代码语言:txt
复制
  </categorySources>
代码语言:txt
复制
 <specialSources>
代码语言:txt
复制
     <allEvents switchValue="All" name="All Events" />
代码语言:txt
复制
     <notProcessed switchValue="All" name="Unprocessed Category" />
代码语言:txt
复制
    <errors switchValue="All" name="Logging Errors &amp; Warnings">
代码语言:txt
复制
       <listeners>
代码语言:txt
复制
           <add name="Rolling Flat File Trace Listener" />
代码语言:txt
复制
        </listeners>
代码语言:txt
复制
     </errors>
代码语言:txt
复制
  </specialSources>

</loggingConfiguration>

代码语言:txt
复制
  1. 在NHibernate中使用Enterprise Library日志应用程序块:

在NHibernate中使用Enterprise Library日志应用程序块,需要创建一个实现ILogger接口的类,并在该类中使用Enterprise Library日志应用程序块记录日志。示例代码如下:

代码语言:csharp
复制

using System;

using System.Diagnostics;

using Microsoft.Practices.EnterpriseLibrary.Logging;

using NHibernate.Cfg;

using NHibernate.Tool.hbm2ddl;

public class NHibernateLogger : ILogger

{

代码语言:txt
复制
  private readonly LogWriter _logWriter;
代码语言:txt
复制
  public NHibernateLogger()
代码语言:txt
复制
  {
代码语言:txt
复制
     _logWriter = EnterpriseLibraryContainer.Current.GetInstance<LogWriter>();
代码语言:txt
复制
  }
代码语言:txt
复制
  public void Log(NHibernate.Log.NHibernateLogLevel logLevel, string message)
代码语言:txt
复制
  {
代码语言:txt
复制
     if (logLevel == NHibernate.Log.NHibernateLogLevel.Error || logLevel == NHibernate.Log.NHibernateLogLevel.Fatal)
代码语言:txt
复制
     {
代码语言:txt
复制
        _logWriter.Write(message, "NHibernate", TraceEventType.Error);
代码语言:txt
复制
     }
代码语言:txt
复制
     else if (logLevel == NHibernate.Log.NHibernateLogLevel.Warn)
代码语言:txt
复制
     {
代码语言:txt
复制
        _logWriter.Write(message, "NHibernate", TraceEventType.Warning);
代码语言:txt
复制
     }
代码语言:txt
复制
     else if (logLevel == NHibernate.Log.NHibernateLogLevel.Info)
代码语言:txt
复制
     {
代码语言:txt
复制
        _logWriter.Write(message, "NHibernate", TraceEventType.Information);
代码语言:txt
复制
     }
代码语言:txt
复制
     else if (logLevel == NHibernate.Log.NHibernateLogLevel.Debug)
代码语言:txt
复制
     {
代码语言:txt
复制
        _logWriter.Write(message, "NHibernate", TraceEventType.Verbose);
代码语言:txt
复制
     }
代码语言:txt
复制
  }
代码语言:txt
复制
  public bool IsEnabled(NHibernate.Log.NHibernateLogLevel logLevel)
代码语言:txt
复制
  {
代码语言:txt
复制
     return true;
代码语言:txt
复制
  }

}

代码语言:txt
复制

在NHibernate的配置文件中,将日志记录器设置为使用刚刚创建的NHibernateLogger类。示例代码如下:

代码语言:csharp
复制

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");

代码语言:txt
复制

这样,NHibernate中的日志记录就会使用Enterprise Library日志

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

2分17秒

Elastic 5分钟教程:使用Logs应用搜索你的日志

3分40秒

Elastic 5分钟教程:使用Trace了解和调试应用程序

36秒

PS使用教程:如何在Mac版Photoshop中画出对称的图案?

2分59秒

Elastic 5分钟教程:使用机器学习,自动化异常检测

1分51秒

Ranorex Studio简介

8分3秒

Windows NTFS 16T分区上限如何破,无损调整块大小到8192的需求如何实现?

16分8秒

Tspider分库分表的部署 - MySQL

1分30秒

基于强化学习协助机器人系统在多个操纵器之间负载均衡。

领券