通过Log4net来配置我们需要的日志文件格式

 

我们先来看看配置写入txt文件是如何 的,当然不止可以配置txt格式还有其它格式。

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

  <log4net>
    <!--定义输出到文件中-->
    <appender name="LogFileAppender"  type="log4net.Appender.FileAppender">
      <!--定义文件存放位置-->
      <file value="log.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value="yyyyMMdd-HH:mm:ss" />
      <layout type="log4net.Layout.PatternLayout">

        <!--输出格式
        样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
        <conversionPattern value="记录时间:%date%newline线程ID:[%thread]%newline日志级别:%-5level%newline出错类:%logger%newline出错位置:%l%newline- 错误描述:%message%newline异常信息:%exception%newline%newline" />
      </layout>
    </appender>

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

    </root>

  </log4net>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
</configuration>
<?xml version="1.0" encoding="utf-8"?>
<configuration> 
  
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>

  <log4net>
    <!--定义输出到文件中-->
    <appender name="LogFileAppender"  type="log4net.Appender.FileAppender">
      <!--定义文件存放位置-->
      <file value="log.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value="yyyyMMdd-HH:mm:ss" />
      <layout type="log4net.Layout.PatternLayout">

        <!--输出格式
        样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
        <conversionPattern value="记录时间:%date%newline线程ID:[%thread]%newline日志级别:%-5level%newline出错类:%logger%newline出错位置:%l%newline- 错误描述:%message%newline异常信息:%exception%newline%newline" />
      </layout>
    </appender>

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

    </root>

  </log4net>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
</configuration>
 
再来看看配置写入数据库中的配置是如何的:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  
    <!--作者:欧阳洲 At:2013年11月21日 11:12:42-->
    <!--Log4net配置信息-->
    <configSections>
      <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    </configSections>

    <log4net>
      <!--写到数据库中-->
      <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
        <!--BufferSize为缓冲区大小,只有日志记录超设定值才会一块写入到数据库-->
        <bufferSize value="1" />
        <!--引用-->
        <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <!--连接数据库字符串-->
        <connectionString value="Data Source=58.249.57.205,8989;Initial Catalog=GDUnicom2;User ID=tycadsql;Password=admintydzsnfgcad*208" />
        <!--插入到表Log-->
        <commandText value="INSERT INTO System__Log_Log4Net ([AddDate],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />

        <!--以下是参数
      日志记录时间,RawTimeStampLayout为默认的时间输出格式-->
        <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>
        <!--异常信息。ExceptionLayout为异常输出的默认格式-->
        <parameter>
          <parameterName value="@exception" />
          <dbType value="String" />
          <size value="2000" />
          <layout type="log4net.Layout.ExceptionLayout" />
        </parameter>
      </appender>

      <root>
        <!--同时写入文件和数据库-->
        <level value="ALL" />
        <appender-ref ref="AdoNetAppender" />

      </root>

    </log4net>
    <system.web>
      <compilation debug="true" targetFramework="4.0" />
    </system.web>

</configuration>
 
最重要我们是如何使用它来输出不同的配置文件,通过方法我可以有选择性的配置不同的输出格式。
	/// <summary>
        /// 日志写入文件
        /// </summary>
        /// <param name="method">当前的方法名</param>
        /// <returns></returns>
        public static ILog Log2File(string method)
        {
            string path = HttpContext.Current.Server.MapPath		("Log2File.config");
            log4net.Config.XmlConfigurator.ConfigureAndWatch(new 		System.IO.FileInfo(HttpContext.Current.Server.MapPath			("Log2File.config")));
            return log4net.LogManager.GetLogger(method);
        }
        /// <summary>
        /// 日志写入数据库
        /// </summary>
        /// <param name="method">当前的方法名</param>
        /// <returns></returns>
        public static ILog Log2Sql(string method)
        {            
            log4net.Config.XmlConfigurator.ConfigureAndWatch(new 		System.IO.FileInfo(HttpContext.Current.Server.MapPath			("Log2Sql.config")));
            return log4net.LogManager.GetLogger(method);
        }


参考Log4net祥细配置地址:
http://www.cnblogs.com/dragon/archive/2005/03/24/124254.html
http://blog.sina.com.cn/s/blog_6d1c583c01010tf3.html
原文地址:https://www.cnblogs.com/ChiYue/p/3447271.html