-
第一步:在项目引用
文件
第二步:
在
文件中加入一句代码,位置如下:
name
type=
第三步:
建立一个单独的配置文件,文件名为:
(这个配置文件会在
Ap
p_Data
目录下按日期每天产生一个日志文件,如:
Log
s_
)
配置文件内容:
xml
version
=
1.0
encoding
=
p>
utf-8
?>
<
log4net
>
<
root
>
<
level
value
=
ALL
/>
<
appender-ref
ref
=
SysAp
pender
/>
root
>
<
logger
=
WebLogger<
/p>
>
<
level
value
=
DEBUG
/>
logger
>
<
appender
name
=
SysAppen
der
type
=
gFileAppender,log4net
>
<
param
name
=
File
value
=
App_Data/
/>
<
param
name
=
AppendToFil
e
value
=
true
/>
<
param
name
=
RollingStyl
e
value
=
Date
/>
<
param
name
=
DatePattern
value
=
"
Logs_
"
yyyyMMdd
"
p>
.txt
"
/>
<
param
name
=
StaticLogFi
leName
value
=
false
/>
<
layout
type
=
nLayout,lo
g4net
>
<
param
name
=
ConversionP
attern
value
=
%d [%t] %-5p %c -
%m%n
/>
<
param
name
=
Header
value
=
-----------
-----------header--------------------------
&
#10;
/>
<
param
name
=
Footer
value
=
-----------
-----------footer--------------------------
10;
/>
layout
>
appender
>
<
appender
name
=
consoleA
pp
<
/p>
type
=
eA
ppender,log4net
>
<
layout
type
=
nLayout,lo
g4net
>
<
param
name
=
ConversionP
attern
value
=
%d [%t] %-5p %c -
%m%n
/>
layout
>
appender
>
<
appender
name
=
SysAppen
der
type
=
gFileAppender
<
/p>
>
<
param
name
=
File
value
=
App_
/>
<
param
name
=
AppendToFil
e
value
=
true
/>
<
param
name
=
MaxSizeRoll
Backups
value
=
12
/>
<
param
name
=
MaximumFile
Size
value
=
500KB
/>
<
param
name
=
RollingStyl
e
value
=
Size
/>
<
param
name
=
StaticLogFi
leName
value
=
true
/>
<
layout
type
=
nLayout
>
<
param
name
=
ConversionP
attern
value
=
%d [%t] %-5p %c [%x]
- %m%n
/>
layout
>
appender
>
log4net
>
第四步:
(
这步很关键
)
(
应该建立
web
项目而不是网站
)
在
文件
加入一句代码
,
< br>的路径所在
Properties
目录下
加入的代码如下:
//
日志组件配置
[assembly:
figurator(ConfigFile =
= true)]
第五步
:开始使用
log4net
的
.cs
代码
using log4net;
using
uration;
object
o
=
ConfigurationSettings
.GetC
onfig(
);
.
p>
DOMConfigurator
.Configure(o
as
.
Xm
lElement
);
(此处的代码已过时)
< br>
log4net.
ILog
logger =
log4net.
LogManager<
/p>
.GetLogger(
);
p>
(
调试
);
(
这是一个
错误日志
);
(
p>
这是一个致命的错误日志
< br>);
(
这是一条
警告日志
);
(
p>
这是一条普通信息
);
ILog
log =
log4ne
t.
LogManager
.GetLogger(
MethodBase
.GetCurrentMethod().Dec
laringTy
pe);
//
记录错误日志
p>
(
,
new
Exception
(
发生了一个异常
));
//
记录严重错误
p>
(
,
new
Exception
(
发生了一个致命错误
));
//
记录一般信息
(
);
//
记录调试信息
(
);
//
记录警告信息
(
);
Con
sole
.WriteLine(
日志
记录完毕。
);
Console
.Read();
第二部分详细说明:涉及多种输出途径
下面的例子展示了如何利用
log4net
记录日志
。
首先从官方网站下载最近版本的
log4net
组件
,现在的最新版本是
1.2.10
。在程序中我们只
需要
文件就行了,添加对
的引用,就可以在程序中使用了。
接着我们配置相关的配置文件
(
Win
Form
对应的是
*.
,
WebForm
对应的是
*.config
)
,
本实例中是控制台应用程序,配置如下(附
各配置的说明)
:
xml
version
=
1.0
encoding
=
p>
utf-8
?>
<
configuration
>
<
configSections
>
<
section
< br>name
=
log4net
p>
type
=
p>
SectionHandler
/>
configSections
>
<
appSettings
>
appSettings
>
<
log4net
>
<
appender
name
=
LogFileA
ppender
type
=
pender
>
<
file
value
=
D:
/>
<
appendToFile
value
=
tru
e
/>
<
rollingStyle
value
=
Dat
e
/>
<
datePattern
value
=
yyyy
MMdd-HH:mm:ss
/>
<
layout
type
=
nLayout
>
<
footer
value
=
by
周公
/>
<
p>
conversionPattern
v
alue
=
记录时间:
%date
线程
ID:[%thread]
日志级
别:
%-5level
出错类:
%logger
property:[%property{NDC}] -
错误描
< br>述:
%message%newline
/>
layout
>
appender
>
p>
<
appender
name
=
ConsoleA
ppender
type
=
eAppender
<
/p>
>
<
layout
type
=
nLayout
>
<
con
versionPattern
value
< br>=
%date [%thread] %-5level
%logger
[%property{NDC}] -
%message%newline
/>
layout
>
appender
>
p>
<
appender
name
=
EventLog
Appender
type
=
ogAppender
>
<
layout
type
=
nLayout
>
<
con
versionPattern
value
< br>=
%date [%thread] %-5level
%logger
[%property{NDC}] -
%message%newline
/>
layout
>
appender
>
p>
<
appender
name
=
AdoNetAp
pender_Access
typ
e
=
Appender
>
<
connectionString
value
=
Provider=.4.0;Data
Source=C:
/>
<
commandText
value
=
INSE
RT INTO LogDetails
([LogDate],[Thread],
[Level],[Logger],[Message]) VALUES (@logDate,
@thread,
@logLevel,
@logger,@message)
/>
<
parameter
>
<
parameterName
p>
value
=
@l
ogDate
/>
<
dbType
value
=
String
/>
<
size
value
=
240
< br>
/>
<
layout
type
=
nLayout
>
p>
<
conversionPattern
value
=
%date
/>
layout
>
parameter
>
<
parameter
>
<
parameterName
p>
value
=
@t
hread
/>
<
dbType
value
=
String
/>
<
size
value
=
240
< br>
/>
<
layout
type
=
nLayout
>
p>
<
conversionPattern
value
=
%thread
/>
layout
>
parameter
>
<
parameter
>
<
parameterName
p>
value
=
@l
ogLevel
/>
<
dbType
value
=
String
/>
<
size
value
=
240
< br>
/>
<
layout
type
=
nLayout
>
p>
<
conversionPattern
value
=
%level
/>
layout
>
parameter
>
<
parameter
>
<
parameterName
p>
value
=
@l
ogger
/>
<
dbType
value
=
String
/>
<
size
value
=
240
< br>
/>
<
layout
type
=
nLayout
>
p>
<
conversionPattern
value
=
%logger
/>
layout
>
parameter
>
<
parameter
>
<
parameterName
p>
value
=
@m
essage
/>
<
dbType
value
=
String
/>
<
size
value
=
240
< br>
/>
<
layout
type
=
nLayout
>
p>
<
conversionPattern
value
=
%message
/>
layout
>
parameter
>
appender
>
p>
<
root
>
<
appender-ref
ref
=
LogFi
leAppender
/>
<
appender-ref
ref
=
Conso
leAppender
/>
<
appender-ref
ref
=
Event
LogAppender
/>
root
>
log4net
>
configuration
>
程序文件:
using
System;
using
c;
using
using
using
tion;
using
log4net;
<
/p>
//
注意下面的语句一定要加上,指定
l
og4net
使用
.config
文件
来读取配置信息
//
如果是
WinForm
(假定程序为
< br>,
则需要一个
文件)
//
如果是
WebFo
rm
,则从
中读取相关信息
[
assembly
:
.
XmlConfigurator
(Watch =
true
)]
namespace
Log4NetDemo
{
///
///
说明:
本程序演示如何利用
log4n
et
记录程序日志信息。
log4net
是一个功能著
名的开源日志记录组件。
///
利用
log4net
可以方便地将日志信息记录到文件、控制台、
W
indows
事件日志
和数据库中(包括
MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLi
te
)。
///
下面的例子展示了如何利用
log4net
记录日志
///
作者:周公
///
时间:
2008-3-26
///
首发地址:
< br>/zhoufoxcn/archive/2008/03/26/
///
public
class
MainClass
{
public
static
void
Main(
string
[] args)
{
//(new MainForm());
//
创建日志记录组件实例
ILog
log =
log4ne
t.
LogManager
.GetLogger(
MethodBase
.GetCurrentMethod().Dec
laringTy
pe);
//
记录错误日志
(
,
new
Exception
(
发生了一个异常
p>
));
//
记录严重错误
(
,
new
Exception
(
发生了一个致命错误
));
//
记录一般信息
(
);
//
记录调试信息
(
);
//
记录警告信息
(
);
Con
sole
.WriteLine(
日志
记录完毕。
);
Console
.Read();
}
}
}
详细配置说明
说明自从上次在
2008
年在博客上发表过有关
log4ne
t
的用法介绍文章之后(网址:
http:
///zhoufoxcn/archive/2008/03/26/
),有不少
朋
友在博文下留言询问一些细节,
现在就一些比较普遍的问题做
一些稍微深入的解答,希
望大家满意。
首先说明一点的是,
log4net
解决的问题是提供一个记
录日志的框架,它提供了向多种
目标写入的实现,比如利用
lo
g4net
可以方便地将日志信息记录到文件、控制台、
Win
dows
事件日志和数据库(包括
MS SQL
Server, Access,
Oracle9i,Oracle8i,DB2,S
QLite
)中,一般来说我们只需要提供一个描述性的字符串,
然后
log4net
就会自动提供有关运行时的一些信息。<
/p>
Log4Net
的版本仍是
1.2.10
(
2008
年我写博文的时候也是这个版本),有
.NET1.0
和
.NET1.1
和
.NET2.0
版本,如果有正在使用高于
.NET2.0
开发的
也不用担心,可以直接
引用这个类库,像在
.NET2.0
p>
中开发一样,它的网址是:
http:
//
/log4net/
关于在
Web
中
支持的问题
在我们开发项目时都会使用到
config
文件,可以在
config
< br>文件中配置
log4net
。这一点
Web
项目和
WinForm
项目
都是一样的。需要注意的是,因为在
Web
项目中一般以较低<
/p>
权限的角色来运行
Web
项目的,
所以在使用文件型日志时要注意不要放在本项目根文件
夹之外。
在
config
文
件中的配置
要使用
log4net
,
首先要在
c
onfig
文件的
节点中增加配置
(如果没有
这个节点请手动增加
),如下:
view
plaincopy to clipboardprint?
<
br>子节点代表一种记录日志的
type=
/>
type=
/>
除此之外,
还要在顶级节点
下增加
子节点。
在
节点下就可以增加
子节点,
每个
方式(仅在这里配置了不代表启用了)。
具体说来有如下
Appender:
AdoNetAppender
:利用
记录到数据库的日志。
AnsiColorTe
rminalAppender
:在
ANSI
窗口终端写下高亮度的日志事件。
A
spNetTraceAppender
:能用
中
Trace
的方式查看记录的日志。
BufferingForwardingAppender
:在输出到子
Appenders
之前先缓存日志事件
。
Co
nsoleAppender
:将日志输出到控制台。
EventLogAppender
:将日志写到
Windows Event Log.
FileAp
pender
:将日志写到文件中。
LocalSyslogAppender
:将日志写到
loc
al syslog service (
仅用于
UNIX
p>
环境下
).
M
emoryAppender
:将日志存到内存缓冲区。
p>
NetSendAppender
:将日志输出到
< br>Windows Messenger service.
这些日志信息将在
p>
用户终端的对话框中显示。
Remote
SyslogAppender
:通过
UDP
< br>网络协议将日志写到
Remote syslog
service
。
Remoting
Appender
:通过
.NET
Remoting
将日志写到远程接收端。
< br>RollingFileAppender
:将日志以回滚文件的形式写到文件中
。
SmtpAppender
:将日
志写到邮件中。
TraceAppender
:将日志写到
.NET trace
系统。
UdpAppender
p>
:将日志
connectionless UDP datagra
ms
的形式送到远程宿主或以
UdpClient
的形式广播。
关于使用
l
og4net
中可能会使用到的一些参数
%m(message):
输出的日志消息,如
(
…
)
输出的一条消息
%n(
new
line):
换行
%d(datetime):
输出当前语句运行的时刻
%r(run
time):
输出程序从运行到执行到当前语句时消耗的毫秒数
%t(thread
id):
当前语句所在的线程
ID
%p(priority):
日志的当前优先级别,即
DEBUG
、
INFO
、
WARN
…等
%c(
class
< br>):
当前日志对象的名称,例如:
%f(file):
输出语句所在的文件名。
%l(line)
:输出语句所在的行号。
p>
%
数字:表示该项的最小长度,如果不够,则用空格填充,如“
p>
%-5level
”表示
level
的最小宽度是
5
个字符,如果实际长度不够<
/p>
5
个字符则以空格填充。
下面以一个实际的例子来说明问题,比如在配置中有“
%date
[%thread]
(%file:%line) %-5level
%logger [%property{NDC}] - %message%newline
”,那么
实际的日志中会是如下格式:
“记录时间:
2010-11-17
16:16:36,561
线程
ID:[9]
日志级别:
文件:
所在行
E
RROR
出
错类:
m
property:[(
null
)] -
错误描述:
error
ion:
在这里发生了一个异常
,Error
Number:2036084948
”
关于对数据库的支持
前面已经说过,
log4net
是支持包括
MS
SQL Server, Access,
Oracle9i,Oracle8i,D
B2,SQLite
在内的数据库的,如果是文件型数据库(如
Access
或
SQLite
)的话就
需要指定数据库文件的位置(在
Web
中最好指定在有读写权限
的文件
夹下,并且实现创建好表),如果是网络数据库就需要指定正确的数据库连接字符
串。
比如要记录到
Oracle
p>
数据库中,在配置文件中可以增加一个
<
appender>
节点,配置
如下:
(Datetime,Thread,Log_Level,Logger,Message)
VALUES
type=
>
Client,
Version=1.0.3300.0, Culture=neutral,
Pu
blicKeyToken=b77a5c561934e089
/>
ID=[user];Password=[password]
/>
(:log_date, :thread, :log_level,
:logger, :message)
/>
/>
/>
/>
/>
/>
/>
/>
>
/>
/>
/>
/>
>
/>
/>
/>
/>
>
/>
/>
/>
/>
>
/>
type=
>
Client,
Version=1.0.3300.0, Culture=neutral,
Pu
blicKeyToken=b77a5c561934e089
/>
ID=[user];Password=[password]
/>
(Datetime,Thread,Log_Lev
el,Logger,Message) VALUES
(:log_date,
:thread, :log_level, :logger, :message)
/>
/>
/>
/>
/>
/>
/>
/>
>
/>
/>
/>
-
-
-
-
-
-
-
-
-
上一篇:《全新版大学英语(第二版)快速阅读1》部分原文
下一篇:鹅妈妈童谣全本(完整版)