您的位置:首页 > 其它

WinForm中log4net配置说明和使用二

2010-06-12 13:28 309 查看
介绍一下各配置信息

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由应用程序提供给日志事件的消息。

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

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

警告:会影响性能。

n等价于 newline
newline换行符

ndcNDC (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。毕竟接口的灵活性要比类高。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: