WebForm 使用log4net

1》 新建一个webForm应用程序, 2》在项目中引用log4net.dll  3》在项目中添加一个名字为log4net.config的配置文件

下面我们开始配置log4net.config

<configuration>

    <configSections>
		<!--配置一个结点 名称为log4net-->
		<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>

	<log4net>
		<!--定义的是日志记录到文件的附着器 name表示该附着器的名称,-->
		<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender,log4net">

			<!--文件路径,如果RollingStyle为Composite或Date,则这里设置为目录,文件名在DatePattern里设置,其他则这里要有文件名。已经扩展支持虚拟目录-->
			<param name="File" value="log\log.txt\" /><!--   <param name="File" value="d:\Log\\" />-->

			<!--True/false,默认为true。当文件存在时,是否在原文件上追加内容。通常无需设置-->
			<param name="AppendToFile" value="true" />

			<!--每天记录的日志文件个数,默认为0,与MaxFileSize配合使用 在CountDirection为负数时有效。-->
			<param name="MaxSizeRollBackups" value="100" />

			<!--每个日志文件的最大大小,可用的单位:KB|MB|GB (好像只有在RollingStyle的值为Size时有效)-->
			<param name="MaxFileSize" value="10240" />

			<!--True/false,默认为true。为true时,RollingStyler的date值将无效。且为true时需要在file里指定文件名,所有日志都会记录在这个文件里。-->
			<param name="StaticLogFileName" value="false" />

			<!--当RollingStyle为Composite或Date,这里设置文件名格式-->
			<param name="DatePattern" value="yyyyMMdd" /><!--  <param name="DatePattern" value="yyyy-MM-dd.LOG" />-->

			<!---创建新文件的方式,可选为Size(按文件大小),Date(按日期),Once(每启动一次创建一个文件),Composite(按日期及文件大小),默认为Composite-->
			<param name="RollingStyle" value="Date" />

			<!--默认值为-1。当文件超过MaximumFileSize的大小时,如果要创建新的文件来存储日志,会根据CountDirection的值来重命名文件。大于-1的值时,file里指定的文件名会依次加上.0,.1,.2递增。当等于或小于-1时,创建依赖于MaxSizeRollBackups参数值,创建备份日志数。-->
			<param name="CountDirection" value="-1" />

			<!---------------log4net记录错误的格式(即:用什么样的格式(布局)来记录错误)---------------->

			<layout type="log4net.Layout.PatternLayout">
				<param name="conversionPattern" value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
				<!--<param name="ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------%n%n" />-->
			</layout>

		</appender>

		<!---------------log4net记录错误的级别(即:在出现什么级别的错误才记录错误)---------------->

		<root><!---logger其实就是root的一个子类,这里的root其实就代表了logger,具体就代表的是<logger name="myLogger"> -->
			<level value="ALL" />
			<!--指定日记对象使用的Appender对象,我们就是通过appender对象来附加我们的日记信息-->
			<appender-ref ref="ErrorAppender" />
		</root>

		<!--我们最好是使用<root> 这种形式,不用直接使用<logger naem=...>因为很多时候我们需要自动获取出错类的类名,如果在这里指定了类名,我们用的时候只能log4net.ILog log = log4net.LogManager.GetLogger("WebLogger");这样子用,获取到的出错类的类名永远是"WebLogger" ,因为很多时候我并不知道哪个类出错了,我就需要自动获取出错类的类名,就需要log4net.ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 这样来获取,如果这里定义了错误类名为"WebLogger"而真正出错的类名并不是"WebLogger"类,那么我们就无法调用log.Error("错误:"+ex);来将错误写入日记-->
		<!--<logger name="WebLogger">
			<level value="ERROR" />
			<appender-ref ref="ErrorAppender"/>
		</logger>-->
	</log4net>

</configuration>

配置好后,因为我们新建这个log4net.config文件是独立的,目前与我们的webForm应用程序是没有任何关系的。所以,我们需要将它加载到我们的项目中

将log4net.config这个配置文件加载到我们的webForm应用程序中有两种方法

1》在我们项目下面的Properties 文件下面有一个AssemblyInfo.cs类  打开这个类,在最下面加入一条语句就可以了

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

注意:ConfigFile是指定我们刚创建的这个log4net.confi配置文件的路径 。

AssemblyInfo.cs类    具体代码如下

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// 有关程序集的常规信息通过下列特性集
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("WebTest")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("WebTest")]
[assembly: AssemblyCopyright("版权所有(C)  2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// 将 ComVisible 设置为 false 会使此程序集中的类型
// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的某个类型,
// 请针对该类型将 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]

// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("82486936-a464-4292-96c3-18300f91122e")]

// 程序集的版本信息由下列四个值组成:
//
//      主版本
//      次版本
//      内部版本号
//      修订号
//
// 可以指定所有这些值,也可以使用“修订号”和“内部版本号”的默认值,
// 方法是按如下所示使用“*”:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

//ConfigFile="log4net.config"表示:我们配置文件的路径为网站根目录下的mylognet4.config这个配置文件,这样程序运行的时候就会按照这个路径来读取这个配置文件
//Watch:log4net框架用这个属性来确定是否需要在运行时监视文件的改变,如果这个属性为true,那么FilsSystemWatcher将会被用来监视文件的改变,重命名,删除等事件。(即:如果这个配置文件发生变化的时候它是否自适应这个变化,也就是说它会自动的去读取这个变化,而不需要重新启动这个正在运行的这个web应用程序)

//其实如果我们吧log4net的配置文件直接配置在web.config文件里,这里就不需要在配置了。这里之所以需要配置是因为我们是独立建立的一个log4net配置文件,为了让它与我们的程序关联起来,在这里,需要对我们建立的log4net配置文件进行读取,加载到我们的程序当中

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

2》假如,我的项目中没有AssemblyInfo.cs这个类文件怎么办呢?   答:我们可以在我们的项目下创建一个Global.asax 文件 ,在Global.asax文件的里来将我们的创建的log4net.config配置文件加载到我们的项目中去

Global.asax文件    具体代码如下:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using log4net;

namespace WebTest
{
    public class Global : System.Web.HttpApplication
    {

        protected void Application_Start(object sender, EventArgs e)
        {
            string filePath = Server.MapPath("~/log4net.config");
            FileInfo fil = new FileInfo(filePath);

            log4net.Config.XmlConfigurator.Configure(fil); //将

            //log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(Server.MapPath("~/log4net.config"))); 其实以上三句代码可以用这一句替代
        }

        protected void Session_Start(object sender, EventArgs e)
        {

        }

        protected void Application_BeginRequest(object sender, EventArgs e)
        {

        }

        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {

        }

        protected void Application_Error(object sender, EventArgs e)
        {

        }

        protected void Session_End(object sender, EventArgs e)
        {

        }

        protected void Application_End(object sender, EventArgs e)
        {

        }
    }
}

注意上面的两段代码:我们只需要AssemblyInfo.cs中加载log4net.config配置文件到我们的项目中,或者在Global.asax中加载log4net.config配置文件到我们的项目中,两种选其一就行,不需要在两个文件中都加载。

好了,文件都已经配置好了。我们就要开始使用了

首先我们在项目中添加WebForm1.aspx 文件,在里面我们认为的些一句会报错的代码,来测试一下我们的log4net.config文件是否配置成功。‘

我们在WebForm1.aspx页面添加一个按钮,点击按钮,执行代码(代码会报错)代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using log4net;
using System.Reflection;
namespace WebTest
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            int x = 5;
            int y = 0;
            try
            {
                int z = x / y;
            }
            catch (Exception ex)
            {
                //Getlogger()静态方法,用来检索框架里是否存在logger对象,如果不存在就创建一个名字为logger的对象
                //log4net.ILog log = log4net.LogManager.GetLogger("WebLogger");//这个WebLogger其实就是配置文件中的logger的name属性名称。它代表的是错误的类名

                log4net.ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);//自获取出错的类
                if (log.IsErrorEnabled)
                {
                    log.Error("错误:"+ex);
                }
            }
        }
    }
}

我们点击 button按钮后代码执行完毕。我们去我们项目所在的磁盘文件路径下面会发现多出了一个log的文件夹,在文件夹里有一个log.txt文件。我们打开log.txt文件



时间: 2024-10-10 13:02:53

WebForm 使用log4net的相关文章

Log4Net问题和思考

问题 一.日志存储方式 1.txt 2.SQLServer数据库 3.log文件 二.项目类型不同 1winFrom 2webFrom 3MVC 4WPF 5控制台 三.切分依据不同 1.空间大小 2.时间 四.常用属性 文件切分依据(日期.大小 ).存储方式:log.SQLServer  http://www.cnblogs.com/yonghuacui/p/6179196.html 各种数据库  http://zhoufoxcn.blog.51cto.com/792419/429988 WP

WebForm的Global.asax文件

public class Global : System.Web.HttpApplication { /// Web应用程序第一次启动时调用该方法,并且该方法只被调用一次(就是部署到IIS上之后第一次启动这个程序的时候调用一次). protected void Application_Start(object sender, EventArgs e) { } /// 开始会话.(用户通过浏览器第一次访问我们网站中的某个页面,这时建立会话,但是当该用户通过浏览器再次访问其它的页面时,该方法不会被执

log4net使用简介

说明:本程序演示如何利用log4net记录程序日志信息.log4net是一个功能著名的开源日志记录组件.利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中.并且我们还可以记载控制要记载的日志级别,可以记载的日志类别包括:FATAL(致命错误).ERROR(一般错误).WARN(警告).INFO(一般信息).DEBUG(调试信息).要想获取最新版本的

Log4Net使用详解

说明自从上次在2008年在博客上发表过有关log4net的用法介绍文章之后(网址:http://blog.csdn.net/zhoufoxcn/archive/2008/03/26/2220533.aspx),有不少朋友在博文下留言询问一些细节,现在就一些比较普遍的问题做一些稍微深入的解答,希望大家满意.首先说明一点的是,log4net解决的问题是提供一个记录日志的框架,它提供了向多种目标写入的实现,比如利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包

转:使用log4net完成程序异常日志记录(使用SQLite数据库记录和普通文本记录)

http://www.cnblogs.com/kyo-yo/archive/2010/06/11/use-log4net-to-log-exception.html 在前端时间开发的时候由于需要将异常保存到数据库中,所以就到网上搜了下专门的日志记录工具,一搜果然很多,比如:log4net,NLog,EntLib Logging等等,但是还是log4net名气最大,所以就下载下来试用了一番,果然很方便,其涵盖了所有常用的日志记录方式具体的可以看下表: AdoNetAppender 将日志记录到数据

Log4Net各参数API

<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/> </configSections> <appSettings>

.Net魔法堂:log4net详解

一.作用 提供一个记录日志的框架,可以将日志信息记录到文件.控制台.Windows事件日志和数据库(MSSQL.Acess.Oracle.DB2和SQLite等). 二.先看看示例,感受一下吧   config配置文件 <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net"

log4net使用具体解释

说明:本程序演示怎样利用log4net记录程序日志信息.log4net是一个功能著名的开源日志记录组件.利用log4net能够方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包含MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中.而且我们还能够记载控制要记载的日志级别,能够记载的日志类别包含:FATAL(致命错误).ERROR(一般错误).WARN(警告).INFO(一般信息).DEBUG(调试信息).要想获取最新版本号

log4net.dll添加报错

描述: 新建项目Log4Net类库项目,添加log4net.dll,封装Log类对日志进行操作 新建webForm项目添加Log4Net类库生成的dll生成日志,页面报错,未能加载文件或程序集log4net,找到的程序集清单定义与程序集引用不匹配 找错:使用NuGet查找最新的log4net.dll稳定版本,2.0.8,添加之后还是报错,各种版本试了一遍,webform项目的framework版本是4.5,log4net.dll的版本也选的4.5 继续查找错误,检查[assembly: log4