WinForm中log4net配置说明和使用二

     介绍一下各配置信息

     1.Appenders

Appenders用来定义日志的输出方式。它还可以通过配置Filters和Layout来实现日志的过滤和输出格式。

它的输出方式有:

  • AdoNetAppender 将日志记录到数据库中。可以采用SQL和存储过程两种方式。
  • AnsiColorTerminalAppender 将日志高亮输出到ANSI终端。
  • AspNetTraceAppender  能用asp.net中Trace的方式查看记录的日志。
  • BufferingForwardingAppender 在输出到子Appenders之前先缓存日志事件。
  • ConsoleAppender 将日志输出到应用程序控制台。
  • EventLogAppender 将日志写到Windows Event Log。
  • FileAppender 将日志输出到文件。
  • RollingFileAppender 将日志以回滚文件的形式写到文件中。
  • ForwardingAppender 发送日志事件到子Appenders。
  • LocalSyslogAppender 将日志写到local syslog service (仅用于UNIX环境下)。
  • MemoryAppender 将日志存到内存缓冲区。
  • NetSendAppender 将日志输出到Windows Messenger service.这些日志信息将在用户终端的对话框中显示。
  • OutputDebugStringAppender 将日志输出到Debuger,如果程序没有Debuger,就输出到系统Debuger。如果系统Debuger也不可用,将忽略消息。
  • RemoteSyslogAppender 通过UDP网络协议将日志写到Remote syslog service。
  • RemotingAppender 通过.NET Remoting将日志写到远程接收端。
  • SmtpAppender 将日志写到邮件中。
  • SmtpPickupDirAppender 将消息以文件的方式放入一个目录中,像IIS SMTP agent这样的SMTP代理就可以阅读或发送它们。
  • TelnetAppender 客户端通过Telnet来接受日志事件。
  • TraceAppender 将日志写到.NET trace 系统。
  • UdpAppender 将日志以无连接UDP数据报的形式送到远程宿主或用UdpClient的形式广播。

共20种,使用时主要体现在type属性上 如 <appender  name="LogFile" type="log4net.Appender.RollingFileAppender,log4net" />     <appender  name="LogFile" type="log4net.Appender.ConsoleAppender,log4net" >。注意加粗部分。具体使用哪种方式就要看具体需求了。

     2. Layouts

Layout用于控制Appender的输出格式,可以使线性的也可以使XML。一个Appender只能有一个Layout。下面以列表的格式来给出具体的说明。

表示式含义
a 等价于appdomain
appdomain 引发日志事件的应用程序域的友好名称。(我在使用中一般是可执行文件的名字。)
c 等价于 logger
C 等价于 type
class 等价于 type
d 等价于 date
date

发生日志事件的本地时间。 使用 DE>%utcdate 输出UTC时间。date后面还可以跟一个日期格式,用大括号括起来。DE>例如:%date{HH:mm:ss,fff}或者%date{dd MMM yyyy HH:mm:ss,fff}。如果date后面什么也不跟,将使用ISO8601 格式 。

日期格式和.Net中DateTime类的ToString方法中使用的格式是一样。

另外log4net还有3个自己的格式Formatter。 它们是 "ABSOLUTE", "DATE"和"ISO8601"分别代表 AbsoluteTimeDateFormatter, DateTimeDateFormatterIso8601DateFormatter。例如: %date{ISO8601}%date{ABSOLUTE}

它们的性能要好于ToString。

exception

异常信息

日志事件中必须存了一个异常对象,如果日志事件不包含没有异常对象,将什么也不输出。异常输出完毕后会跟一个换行。一般会在输出异常前加一个换行,并将异常放在最后。

F 等价于 file
file

发生日志请求的源代码文件的名字。

警告:只在调试的时候有效。调用本地信息会影响性能。

identity

当前活动用户的名字(Principal.Identity.Name).

警告:会影响性能。(我测试的时候%identity返回都是空的。)

l 等价于 location
L 等价于 line
location

引发日志事件的方法(包括命名空间和类名),以及所在的源文件和行号。

警告:会影响性能。没有pdb文件的话,只有方法名,没有源文件名和行号。

level

日志事件等级

line

引发日志事件的行号

警告:会影响性能。

logger

记录日志事件的Logger对象的名字。

可以使用精度说明符控制Logger的名字的输出层级,默认输出全名。

注意,精度符的控制是从右开始的。例如:logger 名为 "a.b.c", 输出模型为 %logger{2} ,将输出"b.c"。

m 等价于 message
M 等价于 method
message

由应用程序提供给日志事件的消息。

mdc

MDC (旧为:ThreadContext.Properties) 现在是事件属性的一部分。 保留它是为了兼容性,它等价于 property

method

发生日志请求的方法名(只有方法名而已)。

警告:会影响性能。

n 等价于 newline
newline

换行符

ndc

NDC (nested diagnostic context)

p 等价于 level
P 等价于 property
properties 等价于 property
property

输出事件的特殊属性。例如: %property{user} 输出user属性。属性是由loggers或appenders添加到时间中的。 有一个默认的属性"DE>log4net:HostName"总是会有。DE>

%property将输出所以的属性 。

(我除了知道可以用它获得主机名外,还不知道怎么用。)

 
r 等价于 timestamp
t 等价于 thread
timestamp

从程序启动到事件发生所经过的毫秒数。

thread

引发日志事件的线程,如果没有线程名就使用线程号。

type

引发日志请求的类的全名。.

可以使用精度控制符。例如: 类名是 "log4net.Layout.PatternLayout", 格式模型是 %type{1} 将输出"PatternLayout"。(也是从右开始的。)

警告:会影响性能。

u 等价于 identity
username

当前用户的WindowsIdentity。(类似:HostName\Username)

警告:会影响性能。

utcdate

发生日志事件的UTC时间。DE>后面还可以跟一个日期格式,用大括号括起来。DE>例如:%utcdate{HH:mm:ss,fff}或者%utcdate{dd MMM yyyy HH:mm:ss,fff}。如果utcdate后面什么也不跟,将使用ISO8601 格式 。

日期格式和.Net中DateTime类的ToString方法中使用的格式是一样。

另外log4net还有3个自己的格式Formatter。 它们是 "ABSOLUTE", "DATE"和"ISO8601"分别代表 AbsoluteTimeDateFormatter, DateTimeDateFormatterIso8601DateFormatter。例如: %date{ISO8601}%date{ABSOLUTE}

它们的性能要好于ToString。

w 等价于 username
x 等价于 ndc
X 等价于 mdc
%

%%输出一个百分号

其它的一些配置信息就不多说了。

     总结:个人建议最好不要直接使用log4net,我们可以通过Common.Logging.dll提供接口来使用log4net。毕竟接口的灵活性要比类高。

posted on 2010-06-12 13:28  rikou  阅读(1627)  评论(0编辑  收藏  举报

导航