第一种方法 在web.config中写配置文件
Log4Net主页: http://logging.apache.org/log4net/ ,下载Log4Net Log4Net主要由Logger, Appender, Filter, Layout 4个组件构成, 一般情况下后3个组件在配置文件中配置. Logger 负责产生日志消息,可以在代码中调用 Appender 负责向存储介质中追加日志, 一般在配置文件中配置,根据保存日志介质的不同Appender有多种, 比如:AdoNetAppender,EventLogAppender,RollingFileAppender等 .参见: http://logging.apache.org/log4net/release/config-examples.html . Filter 负责过滤日志, 一般和Appender联合使用,在配置文件中配置Layout 负责日志消息的格式, 一般和Appender联合使用,在配置文件中配置。 使用步骤
1 .给web项目添加引用log4net.dll 2. 在web.config的configuration(最顶层)下加 (网上文章是把log4net放到configSections前面,但是我编译不通过 )
<
configSections
>
<
section
name
="log4net"
type
="log4net.Config.Log4NetConfigurationSectionHandler, log4net"
/>
</
configSections
>
<
log4net
>
<
root
></
root
>
<
logger
name
="Test"
>
<
level
value
="DEBUG"
/>
<
appender-ref
ref
="rollingFile"
/>
</
logger
>
<
appender
name
="rollingFile"
type
="log4net.Appender.RollingFileAppender,log4net"
>
<
param
name
="File"
type
=""
value
="log/"
/>
<
param
name
="AppendToFile"
value
="true"
/>
<
param
name
="RollingStyle"
value
="Date"
/>
<
param
name
="DatePattern"
value
="yyyyMMdd"
/>
<
param
name
="StaticLogFileName"
value
="false"
/>
<
layout
type
="log4net.Layout.PatternLayout,log4net"
>
<
param
name
="ConversionPattern"
value
="%d [%t] %-5p %c - %m%n"
/>
<
param
name
="Header"
value
=" ----------------------header-------------------------- "
/>
<
param
name
="Footer"
value
=" ----------------------footer-------------------------- "
/>
</
layout
>
</
appender
>
</
log4net
>
Logger的Level属性可以设以下值,由高到低为OFF,FATAL, ERROR,WARN,INFO,DEBUG,ALL. 高于设定值方法都能写入日志, Off所有的写入方法都不写到日志里,ALL则相反。例如当我们设成Info时,logger.Debug就会被忽略而不写入文件,但是FATAL, ERROR,WARN,INFO会被写入,因为他们等级高于 INFO; 3. 在Global.ascx(如果项目中没有,则新建)中的Application_Start方法中加入
void Application_Start( object
sender, EventArgs e)
{ // Code that runs on application startup log4net.Config.XmlConfigurator.Configure(); }
4 .配置<log4net>标签中的内容
< log4net >
< root >
<!--
<level value="ALL" /> <appender-ref ref="rootFile" />
-->
</ root >
< logger name ="Test" >
< level value ="DEBUG" />
< appender-ref ref ="rollingFile" />
</ logger >
< appender name ="rollingFile" type ="log4net.Appender.RollingFileAppender,log4net" >
< param name ="File" type ="" value ="log/" />
< param name ="AppendToFile" value ="true" />
< param name ="RollingStyle" value ="Date" />
< param name ="DatePattern" value ="yyyyMMdd" />
< param name ="StaticLogFileName" value ="false" />
< layout type ="log4net.Layout.PatternLayout,log4net" >
< param name ="ConversionPattern" value ="%d [%t] %-5p %c - %m%n" />
< param name ="Header" value =" ----------------------header-------------------------- " />
< param name ="Footer" value =" ----------------------footer-------------------------- " />
</ layout >
</ appender >
</ log4net >
log4net标签的框架如下, 该标签下有root, logger, appender等标签 root标签 所有的logger都从root继承, root本身也是一个logger logger标签 每个logger标签代表一个logger,appender-ref表示该logger产生的日志消息传递给哪个appender,一个logger可以把相同的消息传递给多个appender记录 appender标签 每个appender表示一个日志的存储位置,name不能和type一样
类型是RollingFileAppender
<
appender
name
="rollingFile"
type
="log4net.Appender.RollingFileAppender,log4net"
>
<
param
name
="File"
value
="log"
/>
文件名以log为开头
<
param
name
="AppendToFile"
value
="true"
/>
是否是向文件中追加日志
<
param
name
="RollingStyle"
value
="Date"
/>
日志根据日期滚动
<
param
name
="DatePattern"
value
="yyyyMMdd"
/>
日志文件名格式为: log20071120
<
param
name
="StaticLogFileName"
value
="false"
/>
日志文件名是否是固定不变的 日志消息的格式, 表示换行
<
layout
type
="log4net.Layout.PatternLayout,log4net"
>
<
param
name
="ConversionPattern"
value
="%d [%t] %-5p %c - %m%n"
/>
<
param
name
="Header"
value
=" ----------------------header-------------------------- "
/>
<
param
name
="Footer"
value
=" ----------------------footer-------------------------- "
/>
</
layout
>
</
appender
>
消息模式 %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息 %n(new line):换行 %d(datetime):输出当前语句运行的时刻 %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数 %t(thread id):当前语句所在的线程ID %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等 %c(class):当前日志对象的名称 %L:输出语句所在的行号 %F:输出语句所在的文件名 %-数字:表示该项的最小长度,如果不够,则用空格填充 5. 在代码中调用Logger
using
System;
using
System.Configuration;
using
System.Data;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.HtmlControls;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
log4net;
public
partial
class
_Default : System.Web.UI.Page
{ protected void Page_Load( object sender, EventArgs e) { ILog LOGGER = LogManager.GetLogger( " Test " ); LOGGER.Debug( " 测试信息 " ); } }
最后,可以在根目录下找到日志对应日志文件。 本例源码:下载本文源码 注:本文参考博客园的相关文章,我用的是vs2008,但类库选得是.net framework2.0. 另记:做实例10分钟就完成了,这么短的文章我却编排了几个小时,到最后才勉强差人意,真不知写了那么多的文章的人是怎么坚持下去的。