• log4net配置(四个不同方式案例)


    成功例子一:

    vs2003建立的asp.net项目,log4net文件放在web.config文件中

    1。添加log4net.dll的引用(下载dll

    2。web.config中添加(注意放对位置,在<configuration> 标签下)

    <configSections>
       <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0"  />
    </configSections>

    <log4net>
       <root>
        <level value="ALL" />
        <appender-ref ref="LogFileAppender" />
       </root>

       <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
        <param name="File" value="log-file.txt" />
        <param name="AppendToFile" value="true" />
        <layout type="log4net.Layout.PatternLayout">
         <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt;%n - %m%n" />
        </layout>
       </appender>
    </log4net>

    3。WebForm1.aspx.cs中page_Load中

    log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
    logger .Debug("hello");

    4。在应用程序代码中读取配置

    正确a:   该web项目中的AssemblyInfo.cs文件中添加(注意放对位置,放在命名空间外)

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

    正确b: 或则Global.asax.cs中添加(位置也是在命名空间外)

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

    正确c:   或则直接在要记录日志的页面文件WebForm1.aspx.cs里写

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

    正确d:  可以在Global.asax中Application_Start里用代码实现,但是如果是 独立log4net.config文件,就不可以了

    即:log4net.Config.XmlConfigurator.Configure();

    5。 web项目的WebForm1.aspx.cs Page_Load中

    log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
    logger .Debug("hello");

     

    成功例子二:

    vs2005建立的asp.net项目,log4net文件放在web.config文件中

    1。同vs2003一样,添加log4net.dll的引用(下载dll

    2。同vs2003一样,web.config中添加(注意放对位置,在<configuration> 标签下)

    3。同vs2003一样

    4。在应用程序代码中读取配置(这里vs2005没有AssemblyInfo.cs 文件,

    可以在Global.asax中Application_Start里用代码实现,即:log4net.Config.XmlConfigurator.Configure();

    或则直接在要记录日志的页面文件WebForm1.aspx.cs里写

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

    5。 web项目的WebForm1.aspx.cs Page_Load中

    log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
    logger .Debug("hello");

    成功例子三:

    vs2005建立的asp.net项目,log4net文件放在单独的配置文件中 log4net.config

    1。同上(添加引用)

    2。在web项目的web.config中添加(位置还是在<configuration> 标签下)

    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0"/>
    </configSections>

    3。建立单独的log4net.config配置文件

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0"  />
    </configSections>

    <log4net>
        <root>
          <level value="ALL" />
          <appender-ref ref="LogFileAppender" />
        </root>

        <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
          <param name="File" value="log-file.txt" />
          <param name="AppendToFile" value="true" />
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt;%n - %m%n" />
          </layout>
        </appender>
    </log4net>
    </configuration>
    4。在应用程序代码中读取配置(道理同上,只有1种正确方法,但是这里Web.Config改成了log4net.config)

    正确:   直接在要记录日志的页面文件WebForm1.aspx.cs里写(注意放对位置,放在命名空间外)

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

    5。 web项目的WebForm1.aspx.cs Page_Load中

    log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
    logger .Debug("hello");

    成功例子四:

    vs2005建立的asp.net项目,log4net文件放在单独的文件中log4net.config,外加,把日志记录放在单独的一个公共项目中,因为往往项目会设计一个公共层,实现日志记录,缓存管理,加密,安全,等等。

    1、添加一个公共类库ClassLib项目,在Properties下的AssemblyInfo.cs文件中最后加入:

    即 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

    2。同上(添加引用)这时是在公共类库ClassLib项目里添加就ok了,

    3。建立单独的log4net.config配置文件(最好放在web项目中,方便以后修改)

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0"   />
    </configSections>

    <log4net>
        <root>
          <level value="ALL" />
          <appender-ref ref="LogFileAppender" />
        </root>

        <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
          <param name="File" value="log-file.txt" />
          <param name="AppendToFile" value="true" />
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt;%n - %m%n" />
          </layout>
        </appender>
    </log4net>
    </configuration>

    4。在Global.asax代码中Application_Start(object sender, EventArgs e) 加入:

    log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(Server.MapPath("~") + @"\log4net.config"));

    5.在公共类库ClassLib项目添加日志类:MyLog.cs

    using System;
    using System.Collections.Generic;
    using System.Text;
    using log4net;

    namespace ClassLib
    {
        public class MyLog
        {

    public static void test()
            {
                log4net.ILog log = log4net.LogManager.GetLogger("MyLogger");
                log.Debug("hello");
            }
    }

    }

    6。在web项目的webFom1.aspx.cs中Page_Load中

    ClassLib.MyLog.test();

    ok.搞定

     

    日志到数据库的log4net.config 配置如下:

    <?xml version="1.0"?>

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

      <log4net debug="false">
        <root>
          <level value="ALL" />
          <appender-ref ref="ADONetAppender" />
          <!-- <appender-ref ref="rootFile" />  -->
        </root>
        <!--     定义loger的名称和使用的appender    -->
        <logger name="*">
          <level value="ALL"/>
          <appender-ref ref="ADONetAppender" />
          <!--<appender-ref ref="rollingFile" />-->
        </logger>
        <appender name="ADONetAppender" type="log4net.Appender.AdoNetAppender">
          <!--      定义几条存入数据库 有2条时才写入数据库,没有两条叫缓存      -->
          <bufferSize value="0" />
          <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
          <connectionString value="database=数据库名;server=(local);User ID=sa;Password=123456" />
          <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
          <parameter>
            <parameterName value="@log_date" />
            <dbType value="DateTime" />
            <layout type="log4net.Layout.RawTimeStampLayout" />
          </parameter>
          <parameter>
            <parameterName value="@thread" />
            <dbType value="String" />
            <size value="255" />
            <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%thread" />
            </layout>
          </parameter>
          <parameter>
            <parameterName value="@log_level" />
            <dbType value="String" />
            <size value="50" />
            <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%level" />
            </layout>
          </parameter>
          <parameter>
            <parameterName value="@logger" />
            <dbType value="String" />
            <size value="255" />
            <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%logger" />
            </layout>
          </parameter>
          <parameter>
            <parameterName value="@message" />
            <dbType value="String" />
            <size value="4000" />
            <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%message" />
            </layout>
          </parameter>
          <parameter>
            <parameterName value="@exception" />
            <dbType value="String" />
            <size value="2000" />
            <layout type="log4net.Layout.ExceptionLayout" />
          </parameter>
        </appender>
      </log4net>
    </configuration>

    数据库结构如下:

    CREATE TABLE [dbo].[Log](
        [Id] [int] IDENTITY(1,1) NOT NULL,
        [Date] [datetime] NOT NULL,
        [Thread] [varchar](255) COLLATE Chinese_PRC_CI_AS NOT NULL,
        [Level] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
        [Logger] [varchar](255) COLLATE Chinese_PRC_CI_AS NOT NULL,
        [Message] [varchar](4000) COLLATE Chinese_PRC_CI_AS NOT NULL,
        [Exception] [varchar](2000) COLLATE Chinese_PRC_CI_AS NULL
    ) ON [PRIMARY]

  • 相关阅读:
    tr 字符转换命令
    Log4cpp配置文件及动态调整日志级别的方法
    Ubuntu使用总结
    vim安装与配置(进阶版)
    [转载] Linux CC与GCC的区别
    C语言基础总结
    VIM之ctags & Taglist 插件
    vim之基础配置
    使用问题:Chrome卡死崩溃
    Ubuntu16.10安装之后的软件安装
  • 原文地址:https://www.cnblogs.com/hakuci/p/1881102.html
Copyright © 2020-2023  润新知