首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络编程-> PHP教程
.Net下几种日志管理方法-.NET教程,.NET Framework
作者:网友供稿 点击:68
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
 

.net下几种日志管理方法

日志是应用程序中不可缺少的一部份,不仅可以记录应用程序的运行状态,还可以记录一些bug,便于应用程序的更新与修改。
在.net有好几种方法可以对日志进行管理。
1、数据库日志。
2、文本日志。
3、系统事件日志。

首先,对于数据库日志而言,它的使用简单而且方便。这里就不做太多的讨论,相信写过与数据相关的项目的人都会用数据来记录一些日志。然而它唯一不好的就是:必须先保证你的数据库链接是正确无误的。
然而这一保证不是必然的,所以这里我再讨论一下其它的两种情况,文本日志及系统事件日志。

文本日志:
它使用简单,而且查看也方便。不好的就是不便于做大量的日志,而且日志内容的查看与分析都不方便。然而它还是可在在一些不适合数据库日志的地方使用。例如一些测试消息的输出,一些独立组件的少量日志等。
一般情况下,为了方便管理,以天为单位对日志文件进行分类。这样一来也可以简单的对文件进行管理。例如:你的文件名可以知道这个日志是什么时候的,然后可以简单的做一个类似数据库一样的查询,管理也还方便。毕竟文本对系统来说是如此的简单。
.net有一个诊断类,可以把文本以监听的方式添加到trace以及debug上,这样一来,你的所有指向trace和degug的输出都会记录到文件里去。这是一个很不错的方法。

using system.diagnostics;

debug.listeners.add(new system.diagnostics.textwritertracelistener(datetime.now.tostring("yyyymmdd")+"..log"));
debug.listeners.add(new system.diagnostics.textwritertracelistener(console.out));

或者:
trace.listeners.add(new system.diagnostics.textwritertracelistener(datetime.now.tostring("yyyymmdd")+"..log"));
trace.listeners.add(new system.diagnostics.textwritertracelistener(console.out));

这里的区别是:trace在release下可以使用,而debug只在debug下使用。
我觉得所有的文本日志中,上面的方法是最好用的。你只须要再做一个日志管理的类就行了。
当然,还要注意,就是监听在24小时后要更新一次,应该把当前的监听清理掉,然后重新添加一个。这也简单。
另一个方法就是自己写文本进行管理。这样的方法要略麻烦一点点,道也不难。

然而文本日志除了不便于做大量日志的工作以还,还有一个致命的问题:进程冲突!
因为文本日志要锁定正在写的文本文件,所以其它要写该文件的程序会出现错误。一般情况下,如果应该程序只有一个副本在运行,而且把日志做为一个全局的静态对象来处理,也不会有什么太大的问题。但程序的第二个副本会因为文件不能打开而启动失败。
这并不是一个无法解决的问题,只用保证程序有一个副本就行了。如果不保证的话,那么小有一点复杂,这里就不再讨论了,下次有机会再讨论这个问题。

对于上面的问题,我想暂时放弃文本日志,用系统的事件日志来处理。

系统事件日志:
.net下有一个eventlog类,它直接与系统的事件日志关联。
简单的一个:
eventlog.writeentry("logsource","this is a test log.");
就可以往系统里写一个事件了。
然而把它用好也还有点点麻烦。首先是上面的方法会在系统的application下写一个事件日志,而且为默认为information类型。这样很不利于管理,大家可以在管理工具里看一下日志,就会发现大量的日志,自己写的一个小日志简直无法找到。
然而.net为我们提供了几个方法来更好的管理日志。

1、添加一个新的logsource。
什么是logsource?其实简单的说,它就是日志的一个分类标记,例如你可以用程序一次取出所以logsource为指定内容的日志。这样一来,只要你记得这个source名,你就可以读取和分类管理日志了。
默认情况下,你在直接用eventlog的静态函数写日志的时候,要指定一个logsource,如果logsource不存在,那么它就自动在application下建立一个,因此,创建logsource就这么简单了。

2、添加一个新的log.
什么是log.这里的log是指系统事件日志里的大日志分类,一般情况下,系统有application,system和sercuity三个日志,每个下面有不同的soucce,这样就构成了日志系统。
你不能独立的创建一个log,因为.net里没有提供任何方法来创建一个log,只能通过函数:createeventsource(string,string)
来创建一个sourcce,此时如果你这样做:createeventsource("mysource","mylog");
你就会在日志管理器里看到多了一个mylog类,然而再这样写日志:
eventlog.writeentry("mysource","this is a test log.");
就可以写一条记录到mylog分类下,这样就可以很好的管理自己的日志了。
需要说明的是:
如果source已经存在,那么创建会失败。注意:不管source的哪个log下,只要source的名字已经存在,那么你的创建都会失败。例如:如果有一个"source1"的日志在application里,那么你就不能再到其它log里再创建一个名为"source1"的日志了。另外:你用程序创建的日志不能在日志管理器里删除它(messages可以删除,但日志分类不能删除)。方法是你还是用程序可以来删除,或者在注册表里来删除它。它的位置:[hkey_local_machine\system\currentcontrolset\services\eventlog\]
看一下注册表,或许你会明白一些。
最后就是用日志实例对象来写日志。你可以指定一个log名和一个source名来写日志,但要注意,必须是log与source匹配,否则也会出现错误。这比直接用静态方法来写日志要复杂一点点,但你有更多的自由空间。
系统事件日志不好的地方就是日志只保存三个月,而且不好管理。如果你可以直接管理服务器,或者就在本机上运行应该会好一些,否则你就不得不自己写些代码来管理日志了。当然,如果一些重要的日志,可以导出到其它文件中。
它的好处是很多的:
1、不必与数据库链接,效率会高一些,也不会有数据库访问失败的问题。
2、不会有进程冲突问题,它是系统的日志,不管是什么应用程序都可以写日志。
3、全局可用,不管在哪里都可以直接写日志,而且可读。因此可以把它当成一个消息通信平台。(当然,可能只有那些大脑有点问题的人会这样做。)然而我只是想说明:a进程写的日志,b进程可以直接读取。

好了,关于日志这次就总结这些。


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·php聊天室技术
·Java面试中的陷阱-JSP教程,Java技巧及代码
·如何找出在线电影的真实下载地址
·用Visual C#实现局域网点对点通讯-.NET教程,C#语言
·不使用installutil.exe安装WINDOWS服务-.NET教程,Windows开发
·域名查询代码公布
·J2EE项目10大风险-JSP教程,J2EE/EJB/服务器
·“IIS配置401错误”完美解决方案-.NET教程,评论及其它
·如何使用ASP实现网站的“目录树”管理-ASP教程,数据库相关
·Java 面试中的陷阱-JSP教程,Java技巧及代码
最新文章
·windows powershell的12项酷功能_windows vista
·google adwords投放报告(一)_网赚技巧
·互联网赚钱三种最基本的模式_网赚技巧
·百度联盟:何种做法会被认为是网站作弊_网赚技巧
·google adsense电话验证的注意事项_网赚技巧
·王峰:没什么可以改变我与雷军的十年友情_站长访谈
·胡安军:创业需要一种信仰_站长访谈
·金融界ceo赵志伟:行业整合才刚刚开始_站长访谈
·李军 bios之家的荣耀与梦想_站长访谈
·酷溜网李善友:创业不赚钱 毋宁死_站长访谈
相关主题
  • .net下几种日志管理方法_asp.net技巧
  • .net下访问access数据库需要注意的问题_asp.net技巧
  • .net下生产图片验证码_asp.net技巧
  • .net下正则表达式应用的四个示例_asp.net技巧
  • .NET下使用DataAdapter保存数据时,如何生成command语句及使用事务-.NET教程,数据库应用
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭