|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
以前很热炒跨平台,主要是由于硅谷挑战微软霸主地位的热情,但是冷静下来后,跨平台往往不是那么一回事。假设你有个软件,所谓的跨平台,你只需要为第二个平台上重新编译一次就行了,这样很难么?.Net下几种日记办理办法
日记是使用程序中不成短少的一部分,不但能够纪录使用程序的运转形态,还能够纪录一些BUG,便于使用程序的更新与修正。
在.Net有好几种办法能够对日记举行办理。
1、数据库日记。
2、文今天志。
3、体系事务日记。
起首,关于数据库日记而言,它的利用复杂并且便利。这里就不做太多的会商,信任写过与数据相干的项目标人城市用数据来纪录一些日记。但是它独一欠好的就是:必需先包管你的数据库链接是准确无误的。
但是这一包管不是一定的,以是这里我再会商一下别的的两种情形,文今天志及体系事务日记。
文今天志:
它利用复杂,并且检察也便利。欠好的就是方便于做大批的日记,并且日记内容的检察与剖析都不便利。但是它仍是可在在一些不合适数据库日记的中央利用。比方一些测试动静的输入,一些自力组件的大批日记等。
一样平常情形下,为了便利办理,以天为单元对日记文件举行分类。如许一来也能够复杂的对文件举行办理。比方:你的文件名能够晓得这个日记是甚么时分的,然后能够复杂的做一个相似数据库一样的查询,办理也还便利。究竟文本对体系来讲是云云的复杂。
.Net有一个诊断类,能够把文本以监听的体例增加到Trace和Debug上,如许一来,你的一切指向Trace和Degug的输入城市纪录到文件里往。这是一个很不错的办法。
usingSystem.Diagnostics;
Debug.Listeners.Add(newSystem.Diagnostics.TextWriterTraceListener(DateTime.Now.ToString("yyyyMMdd")+"..log"));
Debug.Listeners.Add(newSystem.Diagnostics.TextWriterTraceListener(Console.Out));
大概:
Trace.Listeners.Add(newSystem.Diagnostics.TextWriterTraceListener(DateTime.Now.ToString("yyyyMMdd")+"..log"));
Trace.Listeners.Add(newSystem.Diagnostics.TextWriterTraceListener(Console.Out));
这里的区分是:Trace在Release下可使用,而Debug只在Debug下利用。
我以为一切的文今天志中,下面的办法是最好用的。你只必要再做一个日记办理的类就好了。
固然,还要注重,就是监听在24小时后要更新一次,应当把以后的监听清算失落,然后从头增加一个。这也复杂。
另外一个办法就是本人写文本举行办理。如许的办法要略贫苦一点点,道也不难。
但是文今天志除方便于做大批日记的事情以还,另有一个致命的成绩:历程抵触!
由于文今天志要锁定正在写的文本文件,以是别的要写该文件的程序会呈现毛病。一样平常情形下,假如应当程序只要一个正本在运转,并且把日记做为一个全局的静态工具来处置,也不会有甚么太年夜的成绩。但程序的第二个正本会由于文件不克不及翻开而启动失利。
这并非一个没法办理的成绩,只用包管程序有一个正本就好了。假如不包管的话,那末小有一点庞大,这里就不再会商了,下次无机会再会商这个成绩。
关于下面的成绩,我想临时保持文今天志,用体系的事务日记来处置。
体系事务日记:
.net下有一个EventLog类,它间接与体系的事务日记联系关系。
复杂的一个:
EventLog.WriteEntry("LogSource","Thisisatestlog.");
就能够往体系里写一个事务了。
但是把它用好也另有点点贫苦。起首是下面的办法会在体系的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","Thisisatestlog.");
就能够写一笔记录到MyLog分类下,如许就能够很好的办理本人的日记了。
必要申明的是:
假如Source已存在,那末创立会失利。注重:不论Source的哪一个Log下,只需Source的名字已存在,那末你的创立城市失利。比方:假如有一个"Source1"的日记在Application里,那末你就不克不及再到别的Log里再创立一个名为"Source1"的日记了。别的:你用程序创立的日记不克不及在日记办理器里删除它(Messages能够删除,但日记分类不克不及删除)。办法是你仍是用程序能够来删除,大概在注册内外来删除它。它的地位:[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlog]
看一下注册表,也许你会分明一些。
最初就是用日记实例工具来写日记。你能够指定一个Log名和一个Source名来写日记,但要注重,必需是Log与Source婚配,不然也会呈现毛病。这比间接用静态办法来写日记要庞大一点点,但你有更多的自在空间。
体系事务日记欠好的中央就是日记只保留三个月,并且欠好办理。假如你能够间接办理服务器,大概就在本机上运转应当会好一些,不然你就不能不本人写些代码来办理日记了。固然,假如一些主要的日记,能够导出到别的文件中。
它的优点是良多的:
1、不用与数据库链接,效力会高一些,也不会无数据库会见失利的成绩。
2、不会有历程抵触成绩,它是体系的日记,不论是甚么使用程序都能够写日记。
3、全局可用,不论在那里都能够间接写日记,并且可读。因而能够把它当做一个动静通讯平台。(固然,大概只要那些年夜脑有点成绩的人会如许做。)但是我只是想申明:A历程写的日记,B历程能够间接读取。
好了,关于日记此次就总结这些。
Java欺骗了我们那么多年,如今的多核时代,我认为它气数已尽! |
|