手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >log4net创建系统日志的详细步骤
log4net创建系统日志的详细步骤
摘要:前言用户可以从http://logging.apache.org/log4net/下载log4net的源代码。解压软件包后,在解压的src目...

前言

用户可以从http://logging.apache.org/log4net/下载log4net的源代码。解压软件包后,在解压的src目录下将log4net.sln载入Visual Studio .NET,编译后可以得到log4net.dll。用户要在自己的程序里加入日志功能,只需将log4net.dll引入工程即可。

在项目中配置

第一步:首先在项目中引用log4net.dll文件。

第二步:在Web.config文件中进行添加configSections的节点

复制代码 代码如下:

<configSections>

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>

<>

</configSections>

第三步:添加log4net配置节点

复制代码 代码如下:

<log4net debug="true">

</log4net>

然后在log4net节点下添加

写入本地文本文件中的配置

复制代码 代码如下:

<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="SmtpAppender" type="log4net.Appender.SmtpAppender">

<>

<authentication value="Basic" />

<to value="518@qq.com" />

<from value="a@163.com" />

<username value="帐号" />

<password value="密码" />

<subject value="程序异常日志记录邮件发送" />

<smtpHost value="smtp.163.com" />

<bufferSize value="512" />

<lossy value="true" />

<evaluator type="log4net.Core.LevelEvaluator">

<threshold value="debug"/>

</evaluator>

<layout type="log4net.Layout.PatternLayout">

<conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" />

</layout>

</appender>

通过的是163邮箱服务器发送

将日志写入数据库的相关配置,还要建立一张对应的数据库表

复制代码 代码如下:

<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=.;database=Log4Net;user id=sa;password=saa"/>

<commandText value="INSERT INTO _Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @log_thread, @log_level, @log_logger, @log_message, @log_exception)"/>

<parameter>

<parameterName value="@log_date"/>

<dbType value="DateTime"/>

<layout type="log4net.Layout.RawTimeStampLayout"/><>

</parameter>

<parameter>

<parameterName value="@log_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="@log_logger"/>

<dbType value="String"/>

<size value="255"/>

<layout type="log4net.Layout.PatternLayout">

<conversionPattern value="%logger"/><>

</layout>

</parameter>

<parameter>

<parameterName value="@log_message"/>

<dbType value="String"/>

<size value="4000"/>

<layout type="log4net.Layout.PatternLayout">

<conversionPattern value="%message"/><>

</layout>

</parameter>

<parameter>

<parameterName value="@log_exception"/>

<dbType value="String"/>

<size value="255"/>

<layout type="log4net.Layout.ExceptionLayout"/><>

</parameter>

</appender>

另外一种写入文件的方式配置

复制代码 代码如下:

<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">

<>

<file value="example.log" /><>

<appendToFile value="false" /><>

<maximumFileSize value="1KB" /><>

<maxSizeRollBackups value="20" /><>

<layout type="log4net.Layout.PatternLayout">

<conversionPattern value="%level %thread %logger - %message%newline" />

</layout>

</appender>

在log4net节点中还有两个节点

复制代码 代码如下:

<logger name="Loggering">

<level value="Warn"/>

<appender-ref ref="ADONetAppender"/>

</logger>

<root>

<level value="info" />

<>

<appender-ref ref="SmtpAppender"/>

<>

</root>

在框架的体系里,所有的日志对象都是根日志(root logger)的后代。 因此如果一个日志对象没有在配置文件里显式定义,则框架使用根日志中定义的属性。在<root>标签里,可以定义level级别值和Appender的列表。如果没有定义LEVEL的值,则缺省为DEBUG。可以通过<appender-ref>标签定义日志对象使用的Appender对象。<appender-ref>声明了在其他地方定义的Appender对象的一个引用。在一个logger对象中的设置会覆盖根日志的设置。而对Appender属性来说,子日志对象则会继承父日志对象的Appender列表。这种缺省的行为方式也可以通过显式地设定<logger>标签的additivity属性为false而改变。

那么上面就会有数据库日志的写入和邮箱的写入

在Global.asax文件初始化配置

复制代码 代码如下:

protected void Application_Start()

{

//读取日志 如果使用log4net,应用程序一开始的时候,都要进行初始化配置

log4net.Config.XmlConfigurator.Configure();

AreaRegistration.RegisterAllAreas();

RegisterGlobalFilters(GlobalFilters.Filters);

RegisterRoutes(RouteTable.Routes);

}

调用

复制代码 代码如下:

private static readonly log4net.ILog log = log4net.LogManager.GetLogger("Loggering");

public ActionResult About()

{

log.Info("log日志信息");

log.Debug("debug信息");

log.Error("error信息");

log.Warn("warn信息");

Exception ex = new Exception("测试的异常信息");

log.Fatal("fatal信息", ex);

return View();

}

运行一下

Log4net中 DEBUG、INFO、WARN、ERROR 区分得很好。正常的 DEBUG、INFO 的日志, 就让它记录在 日志文件里面吧。

对于 WARN、ERROR 级别的日志, 记录到日志文件的同时, 顺便发送电子邮件到我的信箱里面。 这样一来, 我也不必每天去看日志文件, 二来,出了什么问题, 能及时通过电子邮件得到通知。

数据库结构

复制代码 代码如下:

create database Log4Net

go

use Log4Net

create table _log

(

id int identity(1,1) primary key not null,

date datetime null,

thread int null,

level varchar(10) null,

logger varchar(20) null,

Message varchar(100) null,

Exception varchar(100) null

)

还待优化,有空了再来琢磨琢磨。

【log4net创建系统日志的详细步骤】相关文章:

如何为asp.net网站项目添加子项目

xenocode代码混淆加密的操作步骤

asp.net图片上传生成缩略图的注意事项

asp.net求3位不同数字的组合数

asp.net下定制日期输出格式的代码

asp.net导出EXCEL的功能代码

asp.net创建位图生成验证图片类

ASP.net基础知识之常见错误分析

ASP.NET 入门的五个步骤

asp.net下日期加减的方法

精品推荐
分类导航