log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。
log4net是Apache软件基金会Apache Logging Services工程的一部分。Apache日志服务工程致力于为程序调试和审计提供跨语言的日志服务。(f:百度百科)
原理
Log4net是基于.NET开发的一款记录日志开源组件。它通过一套XML配置的日志引擎,将日志分不同的等级,分别是:FATAL 、 ERROR、 WARN、 INFO 、 DEBUG、ALL(允许所有的日志请求)和OFF(拒绝所有的日志请求),缺省为DEBUG,前五个是不是很熟悉?可以看到和我们平常在调试应用程序的出错有点类似,在编译器中也会留下如错误、警告之类的提示信息,它们的错误级别在不断的降低。
log4net开源项目结构如图所示:
通过查看源码,log4net主要有5个核心部分组成,分别为Logger,Appenders, Filters, Layouts 和Object Renders,在配置文件中它们以节点的形式出现。
Logger:主要负责日志的记录,它记录的方式有多种,可以是以文件、数据库、控制台、邮件等多处方式;
Appenders:主要负责记录日志介质的方式,它的输出方式主要包括:
AdoNetAppender:将日志记录到数据库中。可以采用SQL和存储过程两种方式
AspNetTraceAppender:能用ASP.NET中跟踪的方式查看记录的日志。
BufferingForwardingAppender:在输出到子Appenders之前先缓存日志事件。
ColoredConsoleAppender:在终端的窗口写下高亮度的日志事件。
ConsoleAppender:将日志输出到控制台。
EventLogAppender:将日志写到Windows操作系统的日志中去。
FileAppender:将日志写到文件中。
ForwardingAppender:用来为一个Appender指定一组约束。
MemoryAppender:将日志存到内存缓冲区。
NetSendAppender:将日志输出到Windows Messenger service,这些日志信息将在用户终端的对话框中显示。
OutputDebugStringAppender:配置该Appender以向OutputDebugString API写入日志。
RemotingAppender:通过.NET Remoting将日志写到远程接收端。
RollingFileAppender:将日志以回滚文件的形式写到文件中。
SmtpAppender:将日志写到邮件中。
SmtpPickupDirAppender:配置与SmtpAppender类似,但要把SmtpHost换为PickupDir。
TraceAppender:将日志写到.NET trace 系统。
UdpAppender:将日志connectionless UDP datagrams的形式送到远程宿主或以UdpClient的形式广播。
以上有些输出方式可能会经常用到(比如写入文件和数据库的方式),有些可能会不经常用到(邮件方式等),具体我们在下面举例来说明。
3.Layouts:主要负责把记录日志格式化输出,显示得格式主要如下:
%timestamp [%thread] %-5level %logger{2} %ndc - %message%newline
timestamp: 表示程序已经开始执行的时间。 单位[毫秒]。
Thread:执行当前代码的线程。
Level:日志的级别。
Logger:日志相关请求的名称。
Message:日志消息。
newline:换行。