Log4Net使用详解Word格式.docx
《Log4Net使用详解Word格式.docx》由会员分享,可在线阅读,更多相关《Log4Net使用详解Word格式.docx(38页珍藏版)》请在冰点文库上搜索。
!
--定义输出到文件中-->
appender
LogFileAppender"
log4net.Appender.FileAppender"
--定义文件存放位置-->
file
value="
D:
log4netfile.txt"
appendToFile
true"
rollingStyle
Date"
datePattern
yyyyMMdd-HH:
mm:
ss"
layout
log4net.Layout.PatternLayout"
--每条日志末尾的文字说明-->
footer
by
周公"
--输出格式-->
--样例:
2008-03-26
13:
42:
32,111
[10]
INFO
Log4NetDemo.MainClass
[(null)]
-
info-->
conversionPattern
记录时间:
%date
线程ID:
[%thread]
日志级别:
%-5level
出错类:
%logger
property:
[%property{NDC}]
错误描述:
%message%newline"
/layout>
/appender>
--定义输出到控制台命令行中-->
ConsoleAppender"
log4net.Appender.ConsoleAppender"
--定义输出到windows事件中-->
EventLogAppender"
log4net.Appender.EventLogAppender"
--定义输出到数据库中,这里举例输出到Access数据库中,数据库为C盘的log4net.mdb-->
AdoNetAppender_Access"
log4net.Appender.AdoNetAppender"
connectionString
Provider=Microsoft.Jet.OLEDB.4.0;
Data
Source=C:
log4net.mdb"
commandText
INSERT
INTO
LogDetails
([LogDate],[Thread],[Level],[Logger],[Message])
VALUES
(@logDate,
@thread,
@logLevel,
@logger,@message)"
--定义各个参数-->
parameter>
parameterName
@logDate"
dbType
String"
size
240"
%date"
/parameter>
@thread"
%thread"
@logLevel"
%level"
@logger"
%logger"
@message"
%message"
--定义日志的输出媒介,下面定义日志以四种方式输出。
也可以下面的按照一种类型或其他类型输出。
-->
root>
--文件形式记录日志-->
appender-ref
ref="
--控制台控制显示日志-->
--Windows事件日志-->
--
如果不启用相应的日志记录,可以通过这种方式注释掉
/root>
/log4net>
/configuration>
程序文件:
using
System;
System.Collections.Generic;
System.Text;
System.Windows.Forms;
System.Reflection;
log4net;
//注意下面的语句一定要加上,指定log4net使用.config文件来读取配置信息
//如果是WinForm(假定程序为MyDemo.exe,则需要一个MyDemo.exe.config文件)
//如果是WebForm,则从web.config中读取相关信息
[assembly:
log4net.Config.XmlConfigurator(Watch
=
true)]
namespace
Log4NetDemo
{
///
summary>
利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库中(包括MS
SQL
Server,
Access,
Oracle9i,Oracle8i,DB2,SQLite)。
下面的例子展示了如何利用log4net记录日志
作者:
周公
时间:
2008-3-26
首发地址:
/summary>
public
class
MainClass
static
void
Main(string[]
args)
//Application.Run(new
MainForm());
//创建日志记录组件实例
ILog
log
log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
//记录错误日志
log.Error("
error"
new
Exception("
发生了一个异常"
));
//记录严重错误
log.Fatal("
fatal"
发生了一个致命错误"
//记录一般信息
log.Info("
info"
);
//记录调试信息
log.Debug("
debug"
//记录警告信息
log.Warn("
warn"
Console.WriteLine("
日志记录完毕。
"
Console.Read();
}
运行结果:
控制台上的输出
日志文件内容
首先说明一点的是,log4net解决的问题是提供一个记录日志的框架,它提供了向多种目标写入的实现,比如利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库(包括MSSQLServer,Access,Oracle9i,Oracle8i,DB2,SQLite)中,一般来说我们只需要提供一个描述性的字符串,然后log4net就会自动提供有关运行时的一些信息。
Log4Net的版本仍是1.2.10(2008年我写博文的时候也是这个版本),有.NET1.0和.NET1.1和.NET2.0版本,如果有正在使用高于.NET2.0开发的也不用担心,可以直接引用这个类库,像在.NET2.0中开发一样,它的网址是:
http:
//logging.apache.org/log4net/
关于在Web中支持的问题
在我们开发项目时都会使用到config文件,可以在config文件中配置log4net。
这一点Web项目和WinForm项目都是一样的。
需要注意的是,因为在Web项目中一般以较低权限的角色来运行Web项目的,所以在使用文件型日志时要注意不要放在本项目根文件夹之外。
在config文件中的配置
要使用log4net,首先要在config文件的<
节点中增加配置(如果没有这个节点请手动增加),如下:
viewplaincopytoclipboardprint?
1.<
2.
3.<
除此之外,还要在顶级节点<
下增加<
子节点。
在<
节点下就可以增加<
appender>
子节点,每个<
子节点代表一种记录日志的方式(仅在这里配置了不代表启用了)。
具体说来有如下Appender:
AdoNetAppender:
利用ADO.NET记录到数据库的日志。
AnsiColorTerminalAppender:
在ANSI窗口终端写下高亮度的日志事件。
AspNetTraceAppender:
能用中Trace的方式查看记录的日志。
BufferingForwardingAppender:
在输出到子Appenders之前先缓存日志事件。
ConsoleAppender:
将日志输出到控制台。
EventLogAppender:
将日志写到WindowsEventLog.
FileAppender:
将日志写到文件中。
LocalSyslogAppender:
将日志写到localsyslogservice(仅用于UNIX环境下).
MemoryAppender:
将日志存到内存缓冲区。
NetSendAppender:
将日志输出到WindowsMessengerservice.这些日志信息将在用户终端的对话框中显示。
RemoteSyslogAppender:
通过UDP网络协议将日志写到Remotesyslogservice。
RemotingAppender:
通过.NETRemoting将日志写到远程接收端。
RollingFileAppender:
将日志以回滚文件的形式写到文件中。
SmtpAppender:
将日志写到邮件中。
TraceAppender:
将日志写到.NETtrace系统。
UdpAppender:
将日志connectionlessUDPdatagrams的形式送到远程宿主或以UdpClient的形式广播。
关于使用log4net中可能会使用到的一些参数
%m(message):
输出的日志消息,如ILog.Debug(…)输出的一条消息
%n(newline):
换行
%d(datetime):
输出当前语句运行的时刻
%r(runtime):
输出程序从运行到执行到当前语句时消耗的毫秒数
%t(threadid):
当前语句所在的线程ID
%p(priority):
日志的当前优先级别,即DEBUG、INFO、WARN…等
%c(class):
当前日志对象的名称,例如:
%f(file):
输出语句所在的文件名。
%l(line):
输出语句所在的行号。
%数字:
表示该项的最小长度,如果不够,则用空格填充,如“%-5level”表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。
下面以一个实际的例子来说明问题,比如在配置中有“%date[%thread](%file:
%line)%-5level%logger[%property{NDC}]-%message%newline”,那么实际的日志中会是如下格式:
“记录时间:
2010-11-1716:
16:
36,561线程ID:
[9]日志级别:
文件:
所在行ERROR出错类:
Log4NetDemo.Programproperty:
[(null)]-错误描述:
error
System.Exception:
在这里发生了一个异常,ErrorNumber:
2036084948”
关于对数据库的支持
前面已经说过,log4net是支持包括MSSQLServer,Access,Oracle9i,Oracle8i,DB2,SQLite在内的数据库的,如果是文件型数据库(如Access或SQLite)的话就需要指定数据库文件的位置(在Web中最好指定在有读写权限的文件夹下,并且实现创建好表),如果是网络数据库就需要指定正确的数据库连接字符串。
比如要记录到Oracle数据库中,在配置文件中可以增加一个<
appender>
节点,配置如下:
AdoNetAppender_Oracle"
connectionType
System.Data.OracleClient.OracleConnection,
System.Data.OracleClient,
Version=1.0.3300.0,
Culture=neutral,
PublicKeyToken=b77a5c561934e089"
3.
data
source=[mydatabase];
User
ID=[user];
Password=[password]"
4.
Log
(Datetime,Thread,Log_Level,Logger,Message)
(:
log_date,
:
thread,
log_level,
logger,
message)"
5.
bufferSize
128"
6.
7.
log_date"
8.
DateTime"
9.
log4net.Layout.RawTimeStampLayout"
10.
11.
12.
thread"
13.
14.
255"
15.
16.
17.
18.
19.
20.
log_level"
21.
22.
50"
23.
24.
25.
26.
27.
28.
logger"
29.
30.
31.
32.
33.
34.
35.