??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
Log4net 主要有四个组件。分别是Logger(记录?/span>)Q?/span>Repository(?/span>)Q?/span>Appender(附着?/span>)?/span>Layout(布局)?/span>
Logger
定义与用途:
Logger 是应用程序需要交互的主要lgQ它用来产生日志消息。生的日志消息q不直接昄Q还要预先经q?/span> Layout 的格式化处理后才会输出?/span>
Root
是一个默认的
Logger
Q当一?/span>
root
?/span>
Logger
内容配置一致的时候就会记录两条相同的记录Q当在配|文件中找不?/span>
logger
的名字时候,׃使用root的配|?/span>
Repository
定义与用途:
Repository
主要用于负责日志对象l织l构的维护。现?已经使用LogManagercLl护日志对象l织?/span>
Appender
定义及用途:
定义输出介质Q可以把多个 Aappender 附加C个日志对象中, 一?/span>Appender对象~省地把所有的日志事g传递到输出中Q我们可以通过Aappender Filters来过滤剩下我们需要的部分。分别有U别qoQ定义别区_Q字W串qoQ可以定义多?/span>filter。such as :LevelMatchFilter?font face="Verdana">LevelRangeFilter?/font>MDCFilter、NDCFilter?StringMatchFilter.
Layout
定义与用?/span>
Layout
lg用于向用hC最后经q格式化的输Z息。可以是U性的或一?/span>
XML
文g?/span>
Layout
lg和一?/span>
Appender
lg一起工作。也是说一?/span>
appender
对象
只能对应一?/span>
layout
对象?/span>
Log4net DEBUG
信息分Q?/span>
一共有七
U别
允许Ҏ
Boolean
属?/span>
优先U别
OFF
Q拒l所有的日志hQ?/span>
FATAL ERROR
null void Fatal(...);
null bool IsFatalEnabled;
Highest second three
WARN
void Warn(...);
bool IsWarnEnabled;
four five six
ALL
Q允许所有的日志hQ?/span>
Null
Null
Lowest
Log4net
配置方式Q?/span>
1Q?span style="FONT: 7pt 'Times New Roman'">
在单独文仉配置Q推荐)Q改变配|不需要重新编译代码,同时也可以在E序q行的过E中修改代码?/span>
2Q?span style="FONT: 7pt 'Times New Roman'">
在程序代码中配置
兌配置文gQ?/span>
log4net
框架使用
log4net.Config.DOMConfiguratorAttribute
log4net.Config.XmlConfigurator
在程序集的别上定义配置文g。方法有多种的:
1
Q可以在目?/span>
AssemblyInfo.cs
文g里添加以下的语句
其中
configFile
讑֮了配|文件的文g名,路径Q扩展名
configFileExtension
讑֮了被~译的文件用扩展名字,默认?/span>
config
2
Q可以不带参数应?/span>
DOMConfiguratio():
[assembly: log4net.Config.DOMConfigurator()]
3Q?span style="FONT: 7pt 'Times New Roman'">
也可以在E序代码中用
DOMConfigurator
cL开配置文g。类的构造函数需要一?/span>
FileInfo
对象作参敎ͼ以指打开的配|文件名?/span>
log4net.Config.DOMConfigurator.Configure(
new FileInfo("TestLogger.Exe.Config"));
创徏日志对象Q?/span>
当日志对象没有在配置文g中定义的话,׃使用
root
的祖父节炏V?/span>
Log4net.ILog log = Log4net.LogManager.GetLogger("MyLogger");
输出日志信息Q?/span>
可以使用输出日志的几U方式:fatal();error();warn();info();debug();
if (log.IsDebugEnabled) log.Debug("message");
DEBUG
输出格式的意义:
Eg
Q?/span>
<param name="ConversionPattern"
value="%d [%t] %-5p %c [%x] - %m%n"
/>
%m(message):
输出的日志消息,?/span>
ILog.Debug(
?/span>
)
输出的一条消?/span>
%n(new line):
换行
%d(datetime):
输出当前语句q行的时?/span>
%r(run time):
输出E序从运行到执行到当前语句时消耗的毫秒?/span>
%t(thread id):
当前语句所在的U程
ID
%p(priority):
日志的当前优先别,?/span>
DEBUG
?/span>
INFO
?/span>
WARN
…等
%c(class):
当前日志对象的名Uͼ例如Q?/span>
模式字符串ؓQ?/span>
%-10c -%m%n
代码为:
ILog log=LogManager.GetLogger(“Exam.Log?;
log.Debug(“Hello?;
则输Zؓ下面的Ş式:
Exam.Log - Hello
%L
Q输句所在的行号
。包括类目名、发生的U程Q以及在代码中的行数?/span>
%F
Q输句所在的文g?/span>
%-
数字Q表C的最长度,如果不够Q则用空格填?/span>
例如Q{换模式ؓ
%r [%t]%-5p %c - %m%n
?/span>
PatternLayout
生成类g以下内容的输出:
176 [main] INFO org.foo.Bar - Located nearest gas station.
(未完待箋)