1. 程式人生 > >Log4Net獲取異常資訊並寫入Mysql資料庫

Log4Net獲取異常資訊並寫入Mysql資料庫


本文介紹使用Log4net實現獲取程式的錯誤資訊,並將錯誤資訊寫入Mysql的資料庫。

第一步:

引用相關的dll外掛:log4net.dll和Mysql.Data.dll

第二步:新增log4net.config檔案。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
      <compilation debug="true" targetFramework="4.5" />
      <httpRuntime targetFramework="4.5" />
    </system.web>
    <configSections>
      <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    </configSections>
    <log4net>
      <appender name="AdoNetAppender_MySql" type="log4net.Appender.AdoNetAppender">
        <bufferSize value="1"/>
        <param name="ConnectionType" value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data"/>
        <param name="ConnectionString" value="server=localhost;database=lognet;Uid=root;Pwd=12345;"/>
        <commandText value="INSERT INTO logdetails (LogDate,LogThread,LogLevel,LogLogger,LogActionClick,LogMessage,UserName,UserIP) VALUES (@log_date, @thread, @log_level, @logger, @ActionsClick, @message,@UserName,@UserIP)"/>
        <parameter>
          <parameterName value="@log_date"/>
          <dbType value="DateTime"/>
          <layout type="log4net.Layout.RawTimeStampLayout"/>
          <layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss}" />
        </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="3000" />
          <layout type="Log4NetApply.MyLayout">
            <conversionPattern value="%property{Message}" />
          </layout>
        </parameter>
        <parameter>
          <parameterName value="@ActionsClick" />
          <dbType value="String" />
          <size value="4000" />
          <layout type="Log4NetApply.MyLayout" >
            <conversionPattern value = "%property{ActionsClick}"/>
          </layout>
        </parameter>
        <parameter>
          <parameterName value="@UserName" />
          <dbType value="String" />
          <size value="30" />
          <layout type="Log4NetApply.MyLayout" >
            <conversionPattern value = "%property{UserName}"/>
          </layout>
        </parameter>
        <parameter>
          <parameterName value="@UserIP" />
          <dbType value="String" />
          <size value="20" />
          <layout type="Log4NetApply.MyLayout" >
            <conversionPattern value = "%property{UserIP}"/>
          </layout>
        </parameter>
      </appender>
      <root>
        <level value="ALL"/>
        <appender-ref ref="AdoNetAppender_MySql"/>
      </root>
      <logger name="*">
        <level value="ALL" />
        <appender-ref ref="AdoNetAppender_MySql" />
      </logger>
    </log4net>
</configuration>

第三步:新增自定義異常類Log4Netclass(具體我不寫了,後面我會給出程式碼連線)


第四步:修改Global.asax檔案

void Application_Start(object sender, EventArgs e)
        {
            // 在應用程式啟動時執行的程式碼
            XmlConfigurator.Configure();    

            BundleConfig.RegisterBundles(BundleTable.Bundles);
            AuthConfig.RegisterOpenAuth();
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }

第五步:在AssemblyInfo.cs檔案中新增

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


具體原始碼下載:http://download.csdn.net/download/javon_huang/9958042