log4netlog4net入门


备注

本节概述了log4net是什么,以及开发人员可能想要使用它的原因。

它还应该提到log4net中的任何大型主题,并链接到相关主题。由于log4net的文档是新的,您可能需要创建这些相关主题的初始版本。

设置log4net

让我们创建一个简单的Hello World控制台应用程序,并使用log4net将某些内容记录到控制台。一旦我们运行了这个,我们可以在以下示例中将其扩展为在实际开发场景中使用它。让我们从小开始,从那里建立起来。

首先,我们需要在Visual Studio和WriteLine("Hello World") 创建一个简单的Console项目,如下所示

在此处输入图像描述

接下来,我们需要将log4net库添加到我们的项目中。因此,我们需要右键单击References并选择Manage NuGet Packages

在此处输入图像描述

然后搜索log4net并安装

在此处输入图像描述

我们现在已成功将log4net.dll添加到我们的项目中。

现在我们需要配置app.config (如果它是web应用程序,则为web.config )。这部分有点棘手,但不要惊慌。我们将逐步完成它并进行日志记录和运行。

app.config下我们首先需要在配置下创建一个配置部分。我们需要提供如下所示的名称和类型:

<configSections>
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
 

我们在这里做的是说我们要在配置文件中创建一个名为log4net ,需要查找。与伐木有关的一切都将在这里。从创建我们的日志文件,如何长,以及需要记录什么信息。现在让我们继续创建log4net 部分。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>
  <log4net>
    
  </log4net>
  <startup> 
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>
 

我们要在log4net部分添加的第一件事是一个appender。 appender基本上是一个日志工具。这是我们想要记录日志的内容。有许多可用于登录文件,数据库等的appender。在这个例子中,我们将登录到Console Window,所以让我们创建一个Console Appender:

<log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
  
  </appender>
</log4net>
 

接下来,我们需要定义一个布局:

<log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
    
    </layout>
  </appender>
</log4net>
 

在布局下,我们将定义我们想要在控制台上显示的内容以及我们希望如何显示它。为此,我们需要一种转换模式。我们可以使用许多不同类型的模式,对于这个例子,我们将坚持一个相当简单的模式。

<log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date{ABSOLUTE} [%thread] %level %logger - %message%newline"/>
    </layout>
  </appender>
</log4net>
 

我们上面所做的是说我们需要以下信息:绝对时间戳,抛出异常的运行线程和日志记录级别。 log4net提供了7个日志记录级别。

  • 关 - 没有记录任何内容(无法调用)
  • 致命
  • 错误
  • 警告
  • 信息
  • DEBUG
  • ALL - 一切都记录下来(无法调用)

但是,在7中我们只能使用5(DEBUG,INFO,WARN,ERROR和FATAL)。将日志记录级别声明为DEBUG意味着它将记录所有内容,即DEBUG,INFO,WARN,ERROR和FATAL。但是,将日志记录级别声明为WARN将仅记录WARN,ERROR和FATAL。希望您了解层次结构。

app.config下我们需要的最后一件事是根部分。根部分包含我们的顶级记录器和登录级别。重要的是要理解一切都从root继承,因此除非在根目录下引用,否则不会记录appender。添加后,这就是你的app.config应该是这样的:

<?xml version="1.0" encoding="utf-8" ?>
<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="%date{ABSOLUTE} [%thread] %level %logger - %message%newline"/>
      </layout>
    </appender>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="ConsoleAppender" />
    </root>
  </log4net>
  <startup> 
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration> 
 

复制粘贴配置文件的部分并不是一个坏主意,但重要的是要了解它们的责任。现在我们已经完成了app.config的配置,我们需要在Console Project中添加一些代码。首先,我们需要定义一个需要放在班级之外的一次性条目。

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

将它放在Program.cs文件中的using语句下面。接下来,我们需要创建一个logger实例来将其用于日志记录。每节课一次。

private static readonly log4net.ILog log = log4net.LogManager.GetLogger
(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
 

最后,我们需要记录一些东西

log.Error("This is my error");
 

您的Program.cs文件应该是这样的:

using System;

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

namespace Log4netTutorial
{
    class Program
    {
        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

        static void Main(string[] args)
        {
            Console.WriteLine("Hello World");
            log.Error("This is my error");

            Console.ReadLine();
        }
    }
}
 

继续运行程序,您应该在控制台中记录您的错误:

在此处输入图像描述