log4net的使用实例
log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具,是Apache软件基金会Apache Logging Services工程的一部分。有以下特点:
- 支持多数框架
- 可输出日志到多种目标
- 层级日志体系
- 可使用XML配置
- 可动态配置
- 记录上下文信息
- 被检验过的体系
- 模块化和可扩展化设计
- 灵活、高性能
简单实例
该实例总共实现和验证了一下几种形式的输出:
- AdoNetAppender 将日志记录到数据库中。可以采用SQL和存储过程两种方式。
- ConsoleAppender 将日志输出到应用程序控制台。
- EventLogAppender 将日志写到Windows Event Log。
- FileAppender 将日志输出到文件。
- ForwardingAppender 发送日志事件到子Appenders。
- RollingFileAppender 将日志以回滚文件的形式写到文件中。
- SmtpAppender 将日志写到邮件中。
- SmtpPickupDirAppender 将消息以文件的方式放入一个目录中,像IIS SMTP agent这样的SMTP代理就可以阅读或发送它们。
- TraceAppender 将日志写到.NET trace 系统。
- ColoredConsoleAppender定制颜色输出到控制台
配置文件
<?xml version="1.0" encoding="utf-8" ?>
<!--日志等级
FATAL(致命错误):记录系统中出现的能使用系统完全失去功能,服务停止,系统崩溃等使系统无法继续运行下去的错误。例如,数据库无法连接,系统出现死循环。
ERROR(一般错误):记录系统中出现的导致系统不稳定,部分功能出现混乱或部分功能失效一类的错误。例如,数据字段为空,数据操作不可完成,操作出现异常等。
WARN(警告):记录系统中不影响系统继续运行,但不符合系统运行正常条件,有可能引起系统错误的信息。例如,记录内容为空,数据内容不正确等。
INFO(一般信息):记录系统运行中应该让用户知道的基本信息。例如,服务开始运行,功能已经开户等。
DEBUG (调试信息):记录系统用于调试的一切信息,内容或者是一些关键数据内容的输出。
-->
<configuration>
<configSections>
<!--申明一个名为“log4net“的自定义配置节点-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<!--
debug 可选,取值是true或false,默认是false。设置为true,开启log4net的内部调试。
update 可选,取值是Merge(合并)或Overwrite(覆盖),默认值是Merge。设置为Overwrite,在提交配置的时候会重置已经配置过的库
threshold 可选,取值是repository(库)中注册的level,默认值是ALL-->
<log4net debug="false" update="Merge" threshold="ALL">
<!--root 最多一个,如果存在root,优先取root的配置-->
<root>
<!--level 最多一个,只有在这个级别或之上的事件才会被记录-->
<level value="DEBUG" />
<!--appender-ref 0个或多个,要引用的appender的名字-->
<appender-ref ref="LogConsoleAppender" />
<appender-ref ref="LogRollingFileAppender" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="LogColoredConsoleAppender" />
<!--<appender-ref ref="LogSmtpAppender" />-->
<!--<appender-ref ref="LogSmtpPickupDirAppender" />-->
<!--<appender-ref ref="LogTraceAppender" />-->
<!--<appender-ref ref="LogEventLogAppender" />-->
<appender-ref ref="LogADONetAppender" />
<!--<appender-ref ref="LogForwardingAppender" />-->
</root>
<!--可以给每个Appender写一个logger,也可以利用root一次性使用多个方式输出日志-->
<logger name="LogRoot">
<level value="DEBUG"/>
</logger>
<logger name="LogConsoleAppender">
<level value="DEBUG"/>
<appender-ref ref="LogConsoleAppender" />
</logger>
<logger name="LogRollingFileAppender">
<level value="DEBUG"/>
<appender-ref ref="LogRollingFileAppender" />
</logger>
<logger name="LogFileAppender">
<level value="DEBUG"/>
<appender-ref ref="LogFileAppender" />
</logger>
<logger name="LogColoredConsoleAppender">
<level value="DEBUG"/>
<appender-ref ref="LogColoredConsoleAppender" />
</logger>
<logger name="LogSmtpAppender">
<level value="DEBUG"/>
<appender-ref ref="LogSmtpAppender" />
</logger>
<logger name="LogSmtpPickupDirAppender">
<level value="DEBUG"/>
<appender-ref ref="LogSmtpPickupDirAppender" />
</logger>
<logger name="LogForwardingAppender">
<level value="DEBUG"/>
<appender-ref ref="LogForwardingAppender" />
</logger>
<logger name="LogTraceAppender">
<level value="DEBUG"/>
<appender-ref ref="LogTraceAppender" />
</logger>
<logger name=