利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库,并且我们还可以记载要控制的日志级别,可以记载的日志级别包括:FATAL(致命错误)、ERROR(一般错误)、WARN(警告)、INFO(一般信息)、DEBUG(调试信息)。log4net有四种重要组建,分别为Logger(记录器),Repository(仓储、库),Appender(附着器)以及Layout(布局)。
log4net.dll下载地址:http://logging.apache.org/log4net/download_log4net.cgi。
选择下载文件log4net-1.2.13-bin-newkey.zip。解压选择对应的net版本找到log4net.dll。bin->net->4.0。
项目添加log4net.dll引用。
在项目中创建一个文件夹(Log4NetConfig)。把有关log4net的一些配置文件和类都放在这个文件夹里面。
WEB网站为例,在项目Log4NetConfig文件夹中创建Log4Net.config配置文件。
"1.0" encoding="utf-8"?>
配置文件写完后我们再来写一个Helper类。同样在项目中创建一个名为LogHelper.cs的类文件。
using log4net;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;//指定log4net使用的config文件来读取配置信息
[assembly: log4net.Config.XmlConfigurator(ConfigFile = @"LogConfig\Log4Net.config", Watch = true)]
namespace Project.Log4.Net.LogConfig
{///
配置和Helper类都有了..现在来看看调用方法。
LogHelper.Debug(this, "Debug");
LogHelper.Error(this, "Error");
LogHelper.Fatal(this, "Fatal");
LogHelper.Info(this, "Info");
LogHelper.Warn(this, "Warn");
Log4Net.config是配置日志输出参数文件。在这个文件中可以到看很多配置节点,大体可以分为二个大 类
1:
2:
2.1:定义输出信息设置节点
2.2:定义日志的输出媒介
配置的总体结构就是这样,下面来看一些详细内容。
appender:决定日志输出的方式(可设置多个节点,如对INFO,ERROR等设置不同的输出方式)。
主要包括已下几种:
1 AnsiColorTerminalAppender:在ANSI 窗口终端写下高亮度的日志事件。
2 AspNetTraceAppender:能用asp.net中Trace的方式查看记录的日志。
3 BufferingForwardingAppender:在输出到子Appenders之前先缓存日志事件。
4 ConsoleAppender:将日志输出到控制台。
5 EventLogAppender:将日志写到Windows Event Log.
6 FileAppender:将日志写到文件中。
7 LocalSyslogAppender:将日志写到local syslog service (仅用于UNIX环境下).
8 MemoryAppender:将日志存到内存缓冲区。
9 NetSendAppender:将日志输出到Windows Messenger service.这些日志信息将在用户终端的对话框中显示。
10 RemoteSyslogAppender:通过UDP网络协议将日志写到Remote syslog service。
11 RemotingAppender:通过.NET Remoting将日志写到远程接收端。
12 RollingFileAppender:将日志以回滚文件的形式写到文件中。(实例代码中使用的是此类型)
13 SmtpAppender:将日志写到邮件中。
14 TraceAppender:将日志写到.NET trace 系统。
15 UdpAppender:将日志connectionless UDP datagrams的形式送到远程宿主或以UdpClient的形式广播。
从上面提供的方式中可以看出能输出文件、控制台、Windows事件日志和数据库。这个可根据实际情况选择。
...
这里配置的name(“Log4Net_INFO”)会在定义日志的输出媒介中使用到。name可任意设置。
在appender 节点中还会配置一些文件存放的地址,日志个数等信息。这些在实例代码中都在体现,这里不做说明。我们在来看看日志最后输出呈现的布局设置信息。
这里配置的信息最终是日志打印出来的样式。我们可以看到这里可以设置内容头Header和尾Footer。正文ConversionPattern。在正文中有出现有 %d [%t]这些都是啥意思了表示什么。这里有一个对照表可提供参考:
%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
%n(new line):换行
%d(datetime):输出当前语句运行的时刻
%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
%t(thread id):当前语句所在的线程ID
%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
%c(class):当前日志对象的名称,例如:
%L:输出语句所在的行号
%F:输出语句所在的文件名
%-数字:表示该项的最小长度,如果不够,则用空格填充
配置的基本也就这些。下就是root的配置说明 。
root:
对设置输出的方式进行指定。
控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF
比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录
如果没有定义LEVEL的值,则缺省为DEBUG
%n异常时间:%d [%t]
%n异常级别:%-5p
%n异 常 类:%c [%x]
%n%m
%n
" />