• NHibernate初学者指南(12):日志



    几乎所有的程序都需要日志记录功能。目前为止,已经存在很多提供日志记录功能的框架,我们没必要自己实现,只需要使用它们中的一个即可。.NET中最知名和成熟的日志记录框架是Log4Net。这是一个开源框架,由NHibernate使用。

    为程序添加日志记录

    在这个小练习中,我们将创建一个实例程序并配置其使用Log4Net日志记录框架,然后创建一些基本的日志记录信息。

    1. 打开Visual Studio,创建一个控制台应用程序:LoggingSample。

    2. 添加对log4net.dll程序集的引用。

    3. 右击LoggingSample项目,选择属性,在Application选项卡中,设置Target framework为.NET Framework 4。

    4. 为项目添加一个配置文件App.config,如果已经存在了,就不用添加了。在配置文件中配置应用程序通过定义log4net节使用Log4Net,代码如下:

    <?xml version="1.0"?>
    <configuration>
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,
    log4net"/>
      </configSections>
      <log4net>
        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="[%C.%M] %-5p %m%n"/>
          </layout>
        </appender>
        <root>
          <level value="DEBUG"/>
          <appender-ref ref="ConsoleAppender"/>
        </root>
      </log4net>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
      </startup>
    </configuration>

    上面的代码中定义了一个log4net节。conversionPattern描述日志输出应如何格式化,appender是告诉Log4Net应该使用哪个appender,level是定义我们想启用的输出级别。该级别从低到高是DEBUG<INFO<WARN<ERROR<FATALNONE。

    5. 在Program类中,为该类文件添加XmlConfigurator特性,注意添加到命名空间上面:

    [assembly: log4net.Config.XmlConfigurator(Watch = true)]

    7. 在Program类中,添加并初始化一个类型为ILog的静态类级别变量,如下面的代码所示:

    private static readonly ILog log = LogManager.GetLogger(typeof(Program));

    8. 使用logger产生一些不同级别的的日志信息。代码如下:

    static void Main(string[] args)
    {
        log.Debug("This is a Debug message.");
        log.Info("This is a Info message.");
        log.Warn("This is a Warn message.");
        log.Error("This is a Error message.");
        log.Fatal("This is a Fatal message.");
    
        Console.Write("\r\nHit enter to exit:");
        Console.ReadLine();
    }

    9. 运行程序,结果如下图所示:

    10. 在App.config中,修改日志记录级别为WARN,再次运行程序,如下图所示:

    在NHibernate中启用日志记录

    如前面所述,NHibernate使用Log4Net生成日志信息。现在我们已经对Log4Net的相关知识有了一定理解以及如何配置它们,根据程序需求我们可以使用这些知识为NHibernate设置日志记录。

    1. 打开上一篇的OrderingSystem解决方案。

    2. 在OrderingSystem.Tests中添加对log4net.dll的引用。

    3. 为OrderingSystem.Tests添加一个App.config配置文件,代码如下所示:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <section name="log4net"
        type="log4net.Config.Log4NetConfigurationSectionHandler,
    log4net" />
      </configSections>
      <log4net debug="false">
        <appender name="console"
        type="log4net.Appender.ConsoleAppender, log4net">
          <layout type="log4net.Layout.PatternLayout,log4net">
            <param name="ConversionPattern"
            value="%d [%t] %-5p %c - %m%n" />
          </layout>
        </appender>
        <root>
          <level value="DEBUG" />
          <appender-ref ref="console" />
        </root>
      </log4net>
    </configuration>

    4. 打开entity_mapping_specs类,添加代码为单元测试初始化日志记录,如下所示:

    protected override void BeforeAllTests()
    {
        base.BeforeAllTests();
        log4net.Config.XmlConfigurator.Configure();
    }

    5. 运行测试,结果如下图所示:

    6. 这是全部的信息,但是我们想减少它。NHibernate定义了两个logger:NHibernate和NHibernate.SQL。我们可以分别配置这两个logger。在App.config文件中<root>标签前边添加如下代码:

        <logger name="NHibernate">
          <level value="WARN"/>
        </logger>
        <logger name="NHibernate.SQL">
          <level value="ALL"/>
        </logger>

    7. 修改之后,再次运行测试,结果如下图所示:

  • 相关阅读:
    使用NetworkX进行社交分析
    文本情感分析
    使用NLTK进行基础的NLP处理
    使用pandas对文本数据进行处理
    文本处理
    分类器可视化
    无监督学习
    监督学习2
    模型验证
    Netty学习摘记 —— 预置SSL / HTTP / WebSocket编解码器
  • 原文地址:https://www.cnblogs.com/nianming/p/2259408.html
Copyright © 2020-2023  润新知