共享学习心得

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

本文是教你怎样在.net中用log4net,不但教会你按步就班的用,还教会你最基本的配置。

1.       添加log4net.dll到项目中(这个比较简单,就不详细说了)。

2.       配置web.config文件

在节点<configuration>中添加(灰色部分可以不写)

<configSections>

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

     </configSections>

  <log4net>

     <root>

         <level value="WARN" />

         <appender-ref ref="rollingFile" />

     </root>

     <appender  name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" >

         <param name="File" value="log/log.txt" />

         <param name="AppendToFile" value="false" />

         <!--布局-->

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

              <conversionPattern value="%p %d{HH:mm:ss,fff} %t %c - %m%n" />

              <param name="Header" value="&#13;&#10; ---------header---------------&#13;&#10;" />

              <param name="Footer" value="&#13;&#10; ----------footer---------------&#13;&#10;" />

         </layout>

     </appender>

     <!--附着器-->

     <appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">

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

              <param name="ConversionPattern" value="%d [%t] %-5p  %c - %m%n " />

         </layout>

     </appender>

      

     <!--记录器-->

     <logger name="ylzhang">

         <level value="DEBUG" />

     </logger>

</log4net>

3.       AssenblyInfo.cs文件中添加[assembly: log4net.Config.DOMConfigurator()]

或者在Global.asac.cs文件中的Application_Start方法里添加log4net.Config.DOMConfigurator.Configure();

4.       在程序里调用

1.添加引用using log4net;

2.声明ILog

private static readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

private static readonly ILog logger = LogManager.GetLogger(typeof(WebForm1));

说明: WebForm1为当前类的类名。

System.Reflection.MethodBase.GetCurrentMethod().DeclaringType反射方法来获得类的类型

3.打日志

logger.Fatal("Fatal");

              logger.Error("ERROR");

              logger.Warn("WARN");

              logger.Info("Info");       

              logger.Debug("DEBUG");

 

 

5.       参数说明

     <root>

         <level value="WARN" />

         <appender-ref ref="rollingFile" />

     </root>

其中<level value="WARN" />是代表打日志的级别,如果是在这个以下的日志就不会打印。级别由高往低依次是:
None
Fatal
ERROR
WARN
DEBUG
INFO
ALL

上面的级别中,DEBUGINFO的日志就不会被打印。一般我们开发的时候把级别设置为ALL,这样所有的日志都会打印。

<appender-ref ref="rollingFile" />是附着器的声明,在下面将会对名为rollingFile的附着器做详细设置。

 

<appender  name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" >

其中name是附着器的名称(在root中声明了),type是类型(有几中类型)

 

<param name="File" value="log/log.txt" />是日志文件的名称(这里是相对路径)

 

<param name="AppendToFile" value="false" />值为false时,只要从新编译程序,以前的日志会清空;true时,不会,只是会在最后面继续写日志。

 

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

         <conversionPattern value="%p %d{HH:mm:ss,fff} %t %c - %m%n" />

         <param name="Header" value="&#13;&#10; ---------header---------------&#13;&#10;" />

         <param name="Footer" value="&#13;&#10; ----------footer---------------&#13;&#10;" />

</layout>

这个是对日志打出的样式做设计,<conversionPattern value="%p %d{HH:mm:ss,fff} %t %c - %m%n" />里的参数可以参照下表

a

输出创建日志的AppDomain的名称

c

默认输出logger的全名称。后面可跟“{数字}”,则表示输出与数字对应的logger名称级别(从右边开始)。如全名为“a.b.c”,“%c{2}”输出“b.c

C

输出调用日志纪录请求的类名。后面可跟“{数字}”,表示输出与数字对应的类名称(包含命名空间,从右边开始)。

d

输出日志记录时间,后可跟“{时间格式}”。默认为yyyy-MM-dd HH:mm:ss,fff

F

输出调用日志纪录请求的文件全名。(会影响速度)

l

输出调用日志纪录请求的一些本地信息。如类和成员名,调用文件和调用声明的代码行数。(极其影响性能)

L

输出调用日志纪录请求的声明代码行数。(极其影响性能)

m

输出应用程序所要输出的信息。

M

输出调用日志纪录请求的成员名称。(极其影响性能)

n

输出换行符号

p

输出日志请求的Level

P

 

r

输出从应用程序启动开始到日志纪录请求的时间(毫秒)

t

输出产生日志的线程名称,如果没有名称则输出线程的编号

u

输出当前活动用户的名称。(Principal.Identity.Name

W

输出当前活动用户的windows标识。

x

 

X

 

%

输出一个%

 

上面的设置,打出日志如下

----------------------header--------------------------

FATAL 14:51:48,597 1516 Log4netStudy.WebForm1 - Fatal

ERROR 14:51:48,597 1516 Log4netStudy.WebForm1 - ERROR

WARN 14:51:48,597 1516 Log4netStudy.WebForm1 – WARN

----------------------footer--------------------------

 

<logger name="ylzhang">

         <level value="DEBUG" />

</logger>

比如说:我声明了private static readonly ILog loggertest = LogManager.GetLogger(ylzhang);

那么loggertest打印的日志的级别就以<level value="DEBUG" />为主,因为它覆盖了root中的级别。

 

注意:在项目中建log.txt文件,并打印日志,是要有权限的。必须给项目添加ASPNET用户,并且给它分配写的权限。

 

声明:以上内容已经足够用了,如果想了解更详细,可以参考

http://blog.5d.cn/vip/icecream/200511/185284.html

posted on 2007-01-20 11:09  神秘狭  阅读(664)  评论(0)    收藏  举报