加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Log4Net保存错误日志到SQLServer的步骤与配置

发布时间:2020-12-12 13:53:40 所属栏目:MsSql教程 来源:网络整理
导读:一、新建数据表:MyLog Create Table MyLog( Id int Identity(1,1) Not Null, --编号 Date datetime Not Null, --日期 Thread varchar(255) Not Null, --线程 Level varchar(50) Not Null, --等级 Logger varchar(255) Not Null, --错误者 Message varchar(40

一、新建数据表:MyLog

Create Table MyLog(
    Id int Identity(1,1) Not Null,		--编号
    Date datetime Not Null,			--日期
    Thread varchar(255) Not Null,		--线程
    Level varchar(50) Not Null,			--等级
    Logger varchar(255) Not Null,		--错误者
    Message varchar(4000) Not Null,		--错误信息
    Exception varchar(2000) Null		--错误详细信息
) ON [Primary]


二、 在项目 AssemblyInfo.cs 文件里新增一行
[assembly: log4net.Config.XmlConfiguratorAttribute(Watch = true)]

三、在web.config中增加如下配置

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>
     <log4net debug="false">
       <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
        <param name="File" value="c:LogDBLog.txt" />
        <param name="AppendToFile" value="true" />
        <layout type="log4net.Layout.PatternLayout">
          <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
        </layout>
      </appender>
    
    <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
      <bufferSize value="10"/>
      <connectionType value="System.Data.SqlClient.SqlConnection,System.Data,Version=1.0.3300.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"/>
      <connectionString value="server=192.168.1.100;database=ZYC;user id=sa;password=password"/>
      <commandText value="INSERT INTO MyLog ([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>
       <root>
         <level value="DEBUG" />
         <appender-ref ref="ADONetAppender" />
       </root>
</log4net>


四、修改Global.asax.cs中的Application_Error

protected void Application_Error(object sender,EventArgs e)
{
      Exception ex = HttpContext.Current.Server.GetLastError();
      ILog logger = LogManager.GetLogger(typeof(Global));
      logger.Info(ex);
}
当然也可以在项目中try catch,然后捕获并写入。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读