Spiga
Posts - 28, Articles - 1, Comments - 106
Cnblogs
Dashboard
Login
Home
Contact
Gallery
RSS
用技术改变生活
log4net和SQL Server 2000
2006-09-14 00:30 by Jun1st, 1866 visits,
网摘
,
编辑
log4net是在项目中很常用的一个日志工具,用来记录系统的各种信息和一些异常情况. log4net可以把信息以各种方式输出.关于log4net的介绍和使用,
官方网站
上有详细的说明.
今天在使用log4net的时候遇到几个问题,想和大家讨论一下. 以log4net官网上的那个例子为例:
配置文件如下:
1
<
appender
name
="AdoNetAppender"
type
="log4net.Appender.AdoNetAppender"
>
2
<
bufferSize
value
="100"
/>
3
<
connectionType
value
="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
/>
4
<
connectionString
value
="data source=[database server];initial catalog=[database name];integrated security=false;persist security info=True;User ID=[user];Password=[password]"
/>
5
<
commandText
value
="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)"
/>
6
<
parameter
>
7
<
parameterName
value
="@log_date"
/>
8
<
dbType
value
="DateTime"
/>
9
<
layout
type
="log4net.Layout.RawTimeStampLayout"
/>
10
</
parameter
>
11
<
parameter
>
12
<
parameterName
value
="@thread"
/>
13
<
dbType
value
="String"
/>
14
<
size
value
="255"
/>
15
<
layout
type
="log4net.Layout.PatternLayout"
>
16
<
conversionPattern
value
="%thread"
/>
17
</
layout
>
18
</
parameter
>
19
<
parameter
>
20
<
parameterName
value
="@log_level"
/>
21
<
dbType
value
="String"
/>
22
<
size
value
="50"
/>
23
<
layout
type
="log4net.Layout.PatternLayout"
>
24
<
conversionPattern
value
="%level"
/>
25
</
layout
>
26
</
parameter
>
27
<
parameter
>
28
<
parameterName
value
="@logger"
/>
29
<
dbType
value
="String"
/>
30
<
size
value
="255"
/>
31
<
layout
type
="log4net.Layout.PatternLayout"
>
32
<
conversionPattern
value
="%logger"
/>
33
</
layout
>
34
</
parameter
>
35
<
parameter
>
36
<
parameterName
value
="@message"
/>
37
<
dbType
value
="String"
/>
38
<
size
value
="4000"
/>
39
<
layout
type
="log4net.Layout.PatternLayout"
>
40
<
conversionPattern
value
="%message"
/>
41
</
layout
>
42
</
parameter
>
43
<
parameter
>
44
<
parameterName
value
="@exception"
/>
45
<
dbType
value
="String"
/>
46
<
size
value
="2000"
/>
47
<
layout
type
="log4net.Layout.ExceptionLayout"
/>
48
</
parameter
>
49
</
appender
>
50
对于其中的<buffersize value=100>是指当log信息达到100条时, log信息就会被写到数据库中,但是当我设置value=2时,我发现当有两条log信息时,信息并没有被写到数据库中,要到第三条log信息产生时,前两条log信息才被写到数据中,继续有新的log信息生成时也是同样的情况。那我就觉得log4net实现buffersize的机制是当有一条新的log信息产生时,系统会检查已存在的信息是否达到buffersize了,如果到了,那就把已经存在的Log信息写到数据中,而最新的那条log信息并没有被写到数据库中。
log4net通常也被用来记录系统的各种异常信息,也非常方便。但是不知道log4net本生有异常时,似乎并没有任何异常信息被记录下来(也可能是我不知道)。以上面的配置信息为例,
“@message
"的长度被设置为4000,但是如果数据库中字段的长度没有4000,比如250。这种设置情况很少,但是确实是一个问题。而这个时候,buffersize value值不是0,而是比如100。那么当第101条log信息产生时,系统就会开始把log信息写到数据中。而其中第一条的message信息的长度超过250,这个时候就会发生异常,从这个时候开始,所有的log信息就都不会被写到数据中了。也不会有任何异常信息抛出来。不知道是我的认识不够深入呢,还是这个真的是个问题。
Categories:
随笔
,
Open Source
Add your comment
2 条回复
#1楼
xhluo
2006-09-15 16:19
再App.config 文件中,写入下面的Xml节点就可以开启 log4net 的内部log纪录
<appSettings>
<!-- To enable internal log4net logging specify the following appSettings key -->
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
回复
引用
查看
#2楼
jun1st[未注册用户]
2006-09-15 23:42
Thanks
回复
引用
刷新评论
切换模板
发表评论
昵称:
[登录]
[注册]
主页:
邮箱:
(仅博主可见)
验证码:
看不清,换一个
评论内容:
登录
注册
[使用Ctrl+Enter键快速提交评论]
0
503700
导航:
网站首页
社区
新闻
博问
闪存
网摘
招聘
找找看
Google搜索
China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
China-Pub 计算机绝版图书按需印刷服务
相关文章:
最新IT新闻:
19岁天才黑客发布首个iPhone 3GS破解软件
新浪邮箱大本营粉墨登场!Sina.cn开放注册
IE市场份额首次跌破60%
Google App Engine宕机6小时——云的安全在哪里?
微软新推社交网站Windows Live Planet
相关链接:
About
最新评论
re: showModalDialog和Postback
ShowModalDialog函数的功能: 打开一个子窗口,并且可与父窗口相互传递数据,它与window.open的最大区别就在于由ShowModalDialog打开子窗口后,父窗口将不能操作。 ... -- Jun1st
re: showModalDialog和Postback
但出现了滚动条,怎么解决 -- GARfield_sx
re: USE HttpRuntime.Cache OVER HttpContext.Current.Cache
HttpRuntime.Cache :顾名思义,运行时Cache,是以运行时为基础的,可以用在任何地方 HttpContext.Current.Cache :顾名思义,是以上下文为基础的,只能用在Ht... -- 缘清(aicken)
re: USE HttpRuntime.Cache OVER HttpContext.Current.Cache
@LemonX86
神秘吗?我只不过是我用的时候觉得这两个有点不清楚,就弄弄明白 -- Jun1st
re: USE HttpRuntime.Cache OVER HttpContext.Current.Cache
感觉 你把cache搞的很神秘一样,其实自己写个简单的 cache也比较简单的 -- LemonX86
随笔分类
Rss
.NET Framework
Rss
ASP.NET 2.0
Rss
ASP.NET 3.5
Rss
ASP.NET MVC Framework
Rss
C# 语言
Rss
Design Pattern
Rss
Open Source
Rss
SQL Server 2005
Rss
WinForm
Rss
随笔
随笔档案
2009年5月
2009年4月
2008年12月
2008年11月
2008年8月
2008年7月
2008年5月
2008年3月
2007年12月
2007年9月
2007年5月
2006年9月
更多...
2006年3月
2006年2月
2004年10月
我参加的小组
ASP.NET
.NET 新手小组
Debug 探索团队小组
Web技术联盟
.NET 3.x
jQuery
Lucene
团队博客
Debug 探索团队(0/0)
WCF技术研究团队(0/0)
阅读排行榜
ASP.NET MVC之AJAX(2594)
Asp.Net MVC 入门篇——Overview(2505)
ASP.NET MVC的分页和导航(2497)
Integrate jQuery with ASP.NET Data Controls(2270)
WCF 之旅——1(2079)
开发者园地
Castle Project
connectionString
CSDN
DDLLY-NHibernate
TerryLee blog