.NET中使用log4net

一,加载log4net引用

下载log4net.dll,我们这里使用的是.NET2.0

下载地址:https://files.cnblogs.com/gosky/log4net-1.2.13-bin-newkey.zip

解压以后将 /bin/net/2.0/release/log4net.dll 复制到项目的bin目录下。

二、配置log4net.config

1.在项目根目录下新建文件:log4net.config (注意一定要在根目录下),将下面的内容复制到文件中。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <log4net>
    <!--定义输出到文件中-->
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
      <!--定义文件存放位置-->
      <file value="D:/"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="&quot;logs_&quot;yyyyMMdd&quot;.txt&quot;"/>
      <StaticLogFileName value="false"/>
      <layout type="log4net.Layout.PatternLayout">
        <!--每条日志末尾的文字说明-->
        <footer value="by jzhfz &quot;yyyyMMdd&quot;"/>
        <!--输出格式-->
        <!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
        <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 执行类:%logger property:[%property{NDC}] - 描述:%message%newline"/>
      </layout>
    </appender>
    <!--定义输出到控制台命令行中-->
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
      </layout>
    </appender>
    <!--定义输出到windows事件中-->
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
      </layout>
    </appender>
    <!--定义输出到数据库中,这里举例输出到Access数据库中,数据库为C盘的log4net.mdb-->
    <appender name="AdoNetAppender_Access" type="log4net.Appender.AdoNetAppender">
      <connectionString value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:log4net.mdb"/>
      <commandText value="INSERT INTO LogDetails ([LogDate],[Thread],[Level],[Logger],[Message]) VALUES (@logDate, @thread, @logLevel, @logger,@message)"/>
      <!--定义各个参数-->
      <parameter>
        <parameterName value="@logDate"/>
        <dbType value="String"/>
        <size value="240"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@thread"/>
        <dbType value="String"/>
        <size value="240"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%thread"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@logLevel"/>
        <dbType value="String"/>
        <size value="240"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%level"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@logger"/>
        <dbType value="String"/>
        <size value="240"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%logger"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@message"/>
        <dbType value="String"/>
        <size value="240"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%message"/>
        </layout>
      </parameter>
    </appender>
    <!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。-->
    <root>
      <!--日志级别:ALL/DEBUG/INFO/WARN/ERROR/FATAL/OFF-->
      <level value="ALL"/>
      <!--文件形式记录日志-->
      <appender-ref ref="LogFileAppender"/>
      <!--控制台控制显示日志-->
      <appender-ref ref="ConsoleAppender"/>
      <!--Windows事件日志-->
      <appender-ref ref="EventLogAppender"/>
      <!-- 如果不启用相应的日志记录,可以通过这种方式注释掉
      <appender-ref ref="AdoNetAppender_Access" />
      -->
    </root>
  </log4net>
</configuration>

其中<file value="D:/"/>指定要存放的日志文件的路径。上面是以日期分割日志文件,每天一个日志。

2.如果要以大小分割日志文件,将appender节点内容换成下面的内容。

<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
      <!--定义文件存放位置-->
      <file value="D:/log.txt"/>
      <appendToFile value="true"/>
      <!--最大变换数量-->
      <maxSizeRollBackups value="3" />
      <!--最大文件大小-->
      <maximumFileSize value="20KB" />
      <rollingStyle value="Size"/>
      <datePattern value="&quot;logs_&quot;yyyyMMdd&quot;.txt&quot;"/>
      <StaticLogFileName value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <!--每条日志末尾的文字说明-->
        <footer value="by jzhfz"/>
        <!--输出格式-->
        <!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
        <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 执行类:%logger property:[%property{NDC}] - 描述:%message%newline"/>
      </layout>
    </appender>
于日期分割不同的是:<StaticLogFileName value="true"/>要设置为true,生成的日志文件为 log.txt.1 log.txt.2 log.txt.3
超出最大数量将自动覆盖最前面的文件。

三、设置项目使用log4net输出日志
1.在web.config中配置
    <configSections>
    <!--使用log4net输出日志-->
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
    </configSections>

   2.新增属性文件AssemblyInfo.cs,内容如下

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。

[assembly: log4net.Config.DOMConfigurator(ConfigFile = "log4net.config", Watch = false)]

到这里我们所有的配置工作已经完成。下面介绍如何使用log4net来记录日志。

四、log4net的使用

在需要使用的地方引入命名空间:

using log4net;
using System.Reflection;
public ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
logger.Info(“正常的日志”);
logger.Error("发生了一个异常");
logger.Fatal("发生了一个致命错误");
logger.Debug(“调试信息”);
logger.Warn(“警告”);

 如果想了解每个属性更详细的配置,可参考:http://blog.sina.com.cn/s/blog_6d1c583c01010tf3.html

 

 

posted @ 2013-12-14 14:29  思如雨  阅读(522)  评论(1编辑  收藏  举报