asp.net利用log4net写入日志到SqlServer数据库

  asp.net利用log4net写入日志到SqlServer数据库,Log4net是一个开源的错误日志记录项目,易用性强,源自log4j,品质值得信赖。 下面就我的安装部署log4net到MS sql server的经验与大家分享。

  下载log4net的Dll文件并引入到项目中,在你的web主项目(比如MainWeb.csproj)添加对log4net.dll的引用,并在相应的Globall.cs文件中的Application_Start 事件中写入

protected   void  Application_Start(Object sender, EventArgs e)  
        { // 
            log4net.Config.XmlConfigurator.Configure( new  System.IO.FileInfo( "log4net.config" )); 
        } 

在这个项目对应的Assembly.cs文件中添加一行

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

这里有个地方需要注意

  如果我的主项目是纯粹的代码分离后的aspx\ascx文件, 不含cs文件,那么中需要在饱含cs文件的项目(比如common.web.csproj)文件中添加这两行代码

  举个例子

  解决方案如下:

MySolution.Sln

       |-----common.Web.csproj(包含cs文件)

       |-----Business1.Web.csproj(包含cs文件,继承自common.Web.csproj)

       |-----Business********.Web.csproj(包含cs文件,继承自common.Web.csproj)

       |-----BusinessX.Web.csproj(包含cs文件,继承自common.Web.csproj)

    |-----MainWeb.csproj(不包含cs文件)

  此时, 只需要在 common.Web.csproj 中做以上动作就可以了!其他项目只需要引用 dll即可。

  第三步:添加logn4net.confgi在主项目根目录下:与web.config同路径,之所以不写入web,config文件, 是因为这样可以单独修改调试部署,也就是非侵入式安装的思想。呵呵。

  内容大概如下:

  
  
      
        

基本完成了!需要注意的一个参数

 

  数据库生成脚本

CREATE TABLE [dbo].[ErrorLog](   
    [nId] [bigint] IDENTITY(1,1) NOT NULL,   
    [dtDate] [datetime] NOT NULL,   
    [sThread] [varchar](100) NOT NULL,   
    [sLevel] [varchar](200) NOT NULL,   
    [sLogger] [varchar](500) NOT NULL,   
    [sMessage] [varchar](3000) NOT NULL,   
    [sException] [varchar](4000) NULL) 

 

  第四步:在需要记录的每个类中添加如下代码

 

private static log4net.ILog myLogger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);  

给出一个例子

private void TestLog()   
        {   
            try  
            {   
                //   
            }   
            catch (Exception ex)   
            {   
                Loghandle by Tony 2008.11.21#region Loghandle by Tony 2008.11.21   
                string loginid = EmptyString;   
                //if (user != null) { loginid = user.LoginID; }   
                myLogger.Error(GetErrorMessage(loginid, 1), ex);   
                //Debug("系统已记录错误,请联系管理员!"); return;   
                //Debug(ErrorHandle.GetErrorInfoByID(999), this.ClientID); return;  
                #endregion   
            }   
              
        }  

,表示是记录10 条到缓冲区,满10条后再写入SQL server

  调试时可以改为1,实际应用建议为100

你可能感兴趣的:(ASP.NET,日志,sqlserver)