一起谈.NET技术,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文件, 是因为这样可以单独修改调试部署,也就是非侵入式安装的思想。呵呵。

  内容大概如下:

<?xml version="1.0"?>
<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>
    <!--Log4net Begin by Tony  2008.11.20-->
    <log4net>
        <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
            <bufferSize value="10" />
            <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
            <connectionString value="DATABASE=DBErrorLogs;SERVER=myserver;UID=user;PWD=pwdpwd;Connect Timeout=15;" />
            <commandText value="INSERT INTO ErrorLog ([dtDate],[sThread],[sLevel],[sLogger],[sMessage],[sException]) 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="100" />
                <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%t" />
                </layout>
            </parameter>
            <parameter>
                <parameterName value="@log_level" />
                <dbType value="String" />
                <size value="200" />
                <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%p" />
                </layout>
            </parameter>
            <parameter>
                <parameterName value="@logger" />
                <dbType value="String" />
                <size value="500" />
                <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%logger" />
                </layout>
            </parameter>
           <parameter>
                <parameterName value="@message" />
                <dbType value="String" />
                <size value="3000" />
                <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%m" />
                </layout>
            </parameter>
            <parameter>
                <parameterName value="@exception" />
                <dbType value="String" />
                <size value="4000" />
                <layout type="log4net.Layout.ExceptionLayout" />
            </parameter>
        </appender>
        <!-- setup the root category, add the appenders and set the default level -->
        <root>
            <level value="WARN"/>
            <level value="INFO"/>
            <level value="DEBUG"/>
            <level value="FINE"/>
            <appender-ref ref="ADONetAppender" />
        </root>
        <!-- specify the level for some specific categories -->
        <logger name="iNotes">
            <level value="WARN"/>
            <level value="INFO"/>
            <level value="DEBUG"/>
            <level value="FINE"/>
            <appender-ref ref="ADONetAppender"/>
        </logger>
        <logger name="StellaLogger">
            <level value="ALL"/>
            <appender-ref ref="AdoNetAppender" />
        </logger>
    </log4net>
    <!--Log4net End-->
</configuration>

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

 

  数据库生成脚本

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
            }
        }

<bufferSize value="10" />,表示是记录10 条到缓冲区,满10条后再写入SQL server

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

时间: 2024-09-23 08:52:32

一起谈.NET技术,asp.net利用log4net写入日志到SqlServer数据库的相关文章

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 Applica

一起谈.NET技术,Asp优化,asp缓存技术

一.何谓asp缓存/为什么要缓存 当你的web站点采用asp技术建立的初期,可能感觉到的是asp动态网页技术带来的便利性,以及随意修改性. 自如的http控制.但是,随着访问量的增加,你一定会发现自己的站点访问速度越来越慢,IIS重新启动得越来越频繁.接下来,你一定想优化asp,诸如更换性能更优异的数据库.建立索引.编写存储过程等等.这些措施有些不需要增加成本压力,有些则成本压力很大(譬如丛access到SQL),而且效果还不一定. 面对web访问压力,我认为最经济的办法是利用缓存优化技术来实现

一起谈.NET技术,ASP.NET中如何正确使用Session

Asp.Net中的Session要比Asp中的Session灵活和强大很多,同时也复杂很多:看到有一些Asp.Net开发人员报怨说Session不稳定,莫名其妙的丢失,其实这正是Asp.Net改进的地方之一. 我们知道Session与Cookie最大的区别在于:Cookie信息全部存放于客户端,Session则只是将一个ID存放在客户端做为与服务端验证的标记,而真正的数据都是放在服务端的内存之中的. 在传统web编程语言(比如asp)中,session的过期完全是按照TimeOut来老老实实处理

一起谈.NET技术,ASP.NET的Session 详解

阅读本文章前,需要读者对以下知识有所了解.否则,阅读过程中会在相应的内容上遇到不同程度的问题. 懂得ASP/ASP.NET编程 了解ASP/ASP.NET的Session模型 了解ASP.NET Web应用程序模型 了解ASP.NET Web应用程序配置文件Web.config的作用.意义及使用方法 了解Internet Information Services(以下简称IIS)的基本使用方法 了解如何在Microsoft SQL Server中创建一个数据库. Session模型简介 Sess

一起谈.NET技术,Log4Net 全方位跟踪程序运行

前端日子自己写了一个简单的日志跟踪程序,现在目前正在做的一个项目中使用以便于跟踪程序异常和运行状况,但是被否认了!可能是没有权威性,于是自己总结了一下Log4net日志跟踪系统,这里分享大家学习一下.当然写这个文章的人太多了,这里不是做任何攀比,只是简单的分享供有需要的人. 一. Log4Net 简介 Log4net 是 Apache 下一个开放源码的项目,它是Log4j 的一个克隆版.我们可以控制日志信息的输出目的地.Log4net中定义了多种日志信息输出模式.  在做项目的时候令我最头疼的是

一起谈.NET技术,最全的ASP.NET开源CMS汇总

国内: 1.SiteServer CMS SiteServer CMS 网站内容管理系统(著作权登记号2008SR15710)是定位于中高端市场的CMS内容管理系统,能最近汇总了一些asp.net开源cms,希望对学习ASP.NET的人员带来帮助: 国内CMS: 1.SiteServer CMS SiteServer CMS 网站内容管理系统(著作权登记号2008SR15710)是定位于中高端市场的CMS内容管理系统,能够以最低的成本.最少的人力投入在最短的时间内架设一个功能齐全.性能优异.规模

一起谈.NET技术,细数十大免费构建ASP.NET网站必备工具

最近使用ASP.NET为公司构建了一个简单的公共网站(该网站的地址:http://superexpert.com/.在这个过程中,我们使用了数量很多的免费工具,如果把构建ASP.NET网站的必备工具总结一下,将会是一件十分有趣的事情.这些工具既支持ASP.NET Web Forms又支持ASP.NET MVC. 性能工具 读了两本关于网站的前端性能的书(这两本优秀的图书分别是:<High Performance Web Sites> 和 <Even Faster Web Sites>

一起谈.NET技术,ASP.NET4灵活显标记:数据Web控件改进

长期以来,使用Web控件的开发者都欣赏这些控件所具有的高生产力,但在控制它们生成的标记方面却付出了一定的代价.例如,许多ASP.NET控件会自动地使用元素来包装它们的内容,原因是为了方便布局或样式控制.然而,这种行为却与过去几年中不断发展的网络标准相违背;这些标准支持使用更清洁和更简洁的HTML标记,而建议节约使用标记;同时,它们提倡应当尽可能使用层叠样式表(CSS)来实现网页的布局和造型.此外,元素和其他自动添加的内容使得使用CSS来修饰Web控件和从客户端使用这些控件更加困难. ASP.NE

一起谈.NET技术,ASP.NET MVC功能详解 变身数据展示达人

作为Web开发者,我们经常面对的任务就是将数据通过表格展现给用户.最简单的情景是比如仅将顾客的订单显示出来.然而,更多的数据表格将提供比如排序,分页等更多的丰富的功能. 在ASP.NET的web表单中,GridView控件提供了一种快速简便的方法显示网格中的记录集,并提供像排序.分页.编辑及删除的功能,所有的这些只需写少量的代码就可以实现.在页面加载时,GridView自动HTML中的table标记,让你不需要写任何标签,以及不用去考虑如何显示和将数据绑定到GridView控件.在ASP.NET