• .NET中使用log4net


    一,加载log4net引用

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

    下载地址:http://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

  • 相关阅读:
    [日料探店] 食一料理
    工地英语
    C++20协程解糖
    C++20协程解糖
    C++20协程解糖
    单表操作
    数据库查询语句罗列
    数据库简易介绍
    mysql的常用操作
    css基础
  • 原文地址:https://www.cnblogs.com/gosky/p/3474319.html
Copyright © 2020-2023  润新知