本文是教你怎样在.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=" ---------header--------------- " />
<param name="Footer" value=" ----------footer--------------- " />
</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
上面的级别中,DEBUG、INFO的日志就不会被打印。一般我们开发的时候把级别设置为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=" ---------header--------------- " />
<param name="Footer" value=" ----------footer--------------- " />
</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

浙公网安备 33010602011771号