log4net应用实践(一)
1、背景
-
可输出日志到多种目标
-
层级日志体系
-
可使用XML配置
-
可动态配置
-
记录上下文信息
-
被检验过的体系
-
模块化和可扩展化设计
-
灵活、高性能
3、主要组成
Appenders(输出源)、Filters(过滤器)、Layouts(布局)、Loggers(日志类别)和 Object Renders(渲染器)。
a、Appenders(输出源):
用来定义日志的输出方式,其中包括:
·AdoNetAppender 将日志记录到数据库中。可以采用SQL和存储过程两种方式。
·AnsiColorTerminalAppender 将日志高亮输出到ANSI终端。
·AspNetTraceAppender 能用asp.net中Trace的方式查看记录的日志。
·BufferingForwardingAppender 在输出到子Appenders之前先缓存日志事件。
·ConsoleAppender 将日志输出到应用程序控制台。
·EventLogAppender 将日志写到Windows Event Log。
·FileAppender 将日志输出到文件。
·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将日志写到远程接收端。
·RollingFileAppender 将日志以回滚文件的形式写到文件中。
·SmtpAppender 将日志写到邮件中。
·SmtpPickupDirAppender 将消息以文件的方式放入一个目录中,像IIS SMTP agent这样的SMTP代理就可以阅读或发送它们。
·TelnetAppender 客户端通过Telnet来接受日志事件。
·TraceAppender 将日志写到.NET trace 系统。
·UdpAppender 将日志以无连接UDP数据报的形式送到远程宿主或用UdpClient的形式广播。
b、Filter(过滤器):
用来过滤输出源输出的内容,其中包括:
·DenyAllFilter 阻止所有的日志事件被记录
·LevelMatchFilter 只有指定等级的日志事件才被记录
·LevelRangeFilter 日志等级在指定范围内的事件才被记录
·LoggerMatchFilter Logger名称匹配,才记录
·PropertyFilter 消息匹配指定的属性值时才被记录
·StringMathFilter 消息匹配指定的字符串才被记录
c、Layout(布局):
用来控制输出源输出内容的输出格式(一个输出源只带有一个布局)
最常用的Layout应该是用户自定义格式的PatternLayout,其次是SimpleLayout和ExceptionLayout。然后还有4个Layout,其中有两个是输出Xml的Layout,但是中文会有问题。
ExceptionLayout需要给Logger的方法传入Exception对象作为参数才起作用,否则就什么也不输出。输出的时候会包含Message和Trace
d、 Loggers(日志类别):
直接和应用程序交互的组件。Logger只是产生日志,然后由它引用的Appender记录到指定的媒介,并由Layout控制输出格式。
Logger提供了多种方式来记录一个日志消息,也可以有多个Logger同时存在。每个实例化的Logger对象对被log4net作为命名实体(Named Entity)来维护。log4net使用继承体系,也就是说假如存在两个Logger,名字分别为a.b.c和a.b。那么a.b就是a.b.c的祖先。每个Logger都继承了它祖先的属性。
级别 |
说明 |
允许的方法 |
优先级别 |
OFF |
—— |
—— |
Highest |
FATAL |
毁灭级别 |
void Fatal(...); |
—— |
ERROR |
错误级别 |
void Error(...); |
—— |
WARN |
警告级别 |
void Warn(...); |
—— |
INFO |
消息级别 |
void Info(...); |
—— |
DEBUG |
调试级别 |
void Debug(...); |
—— |
ALL |
—— |
—— |
Lowest |
注:其中OFF表示拒绝所有日志记录,ALL表示所有日志都可以记录。
e、Object Renders(渲染器):
按照用户定义的标准输出日志消息。Object Renders必须实现log4net.ObjectRenderer.IObjectRenerer接口。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。