|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
java是一种面向对象的编程语言,优点是可移植性比较高,最初设计时就是本着一次编写到处执行设计的。可以开发各种应用程序和游戏,不过速度没有c++快,所以一般是不用java来编写应用程序和电脑游戏。
概述
日记手艺为产物的质量和服务供应了主要的支持。JDK在1.4版本今后到场了日记机制,为Java开辟职员供应了便当。但这类日记机制是基于静态日记级其余,也就是在程序运转前就需设定上去要打印的日记级别,如许就会带来一些方便。
在JDK供应的日记功效中,日记级别被细化为9级,用以辨别分歧日记的用处,用来纪录一个毛病,大概纪录一般运转的信息,又或是纪录具体的调试信息。因为日记级别是静态的,假如日记级别设定太高,初级其余日记难以打印出来,从而招致在毛病产生时分,难以往追踪毛病的产生缘故原由,今朝经常接纳的体例是在毛病产生的时分,不能不先调剂日记级别到绝对低的水平,然后再往触发毛病,使得成绩本源失掉展现。可是这类产生成绩必要修改产物设置,然后从头触提问题举行调试的方式使得产物用户体验变差,并且有些成绩会由于偶发性,情况很庞大等缘故原由很难从头触发。
相反,如果后来就把日记级别调剂到对照低,那末日记两头会有大批无用信息,并且当产物对照庞大的时分,会招致产生的日记文件很年夜,革新很快,没法实时的纪录无效的信息,乃至成为功能瓶颈,从而下降了日记功效对产物的匡助。
本文借助JavaLogging中的MemoryHandler类将一切级别日记缓存起来,在得当时候输入,来办理这个成绩。次要环绕MemoryHandler的界说和logging.properties文件的处置而睁开。
实例依靠的场景以下,假想用户必要在产物产生严峻毛病时,检察先前产生的包括Exception的毛病信息,以此作为诊断成绩启事的根据。利用Java缓冲机制造出的一个办理计划是,将一切产物运转过程当中发生的包括Exception的日记条目保留在一个可设定巨细的轮回缓冲行列中,当严峻毛病(SEVERE)产生时,将缓冲行列中的日记输入到指定平台,供用户查阅。
Java日记机制的先容
Java日记机制在良多文章中都有先容,为了便于前面文章部分的了解,在这里再复杂先容一下本文用到的一些关头字。
Level:JDK中界说了Off、Severe、Warning、Info、Config、Fine、Finer、Finest、All九个日记级别,界说Off为日记最初等级,All为最高等级。每条日记必需对应一个级别。级其余界说次要用来对日记的严峻水平举行分类,同时能够用于把持日记是不是输入。
LogRecord:每条日记会被纪录为一条LogRecord,个中存储了类名、办法名、线程ID、打印的动静等等一些信息。
Logger:日记布局的基础单位。Logger是以树形布局存储在内存中的,根节点为root。com.test(假如存在)必定是com.test.demo(假如存在)的父节点,即前缀婚配的已存在的logger必定是这个logger的父节点。这类父子干系的界说,能够为用户供应更加自在的把持粒度。由于子节点中假如没有界说处置划定规矩,如级别handler、formatter等,那末默许就会利用父节点中的这些处置划定规矩。
Handler:用来处置LogRecord,默许Handler是能够毗连成一个链状,顺次对LogRecord举行处置。
Filter:日记过滤器。在JDK中,没有完成。
Formatter:它次要用于界说一个LogRecord的输入格局。
.Java日记处置流程
展现了一个LogRecord的处置流程。一条日记进进处置流程起首是Logger,个中界说了可经由过程的Level,假如LogRecord的Level高于Logger的品级,则进进Filter(假如有)过滤。假如没有界说Level,则利用父Logger的Level。Handler中历程相似,个中Handler也界说了可经由过程Level,然落后行Filter过滤,通过假如前面另有其他Handler,则间接交由前面的Handler举行处置,不然会间接绑定到formatter下面输出到指定地位。
在完成日记缓存之前,先对Filter和Formatter两个帮助类举行先容。
Filter
Filter是一个接口,次要是对LogRecord举行过滤,把持是不是对LogRecord举行进一步处置,其能够绑定在Logger下或Handler下。
只需在booleanisLoggable(LogRecord)办法中加上过滤逻辑就能够完成对logrecord举行把持,假如只想对产生了Exception的那些log纪录举行记录,那末能够经由过程清单1来完成,固然起首必要将该Filter经由过程挪用setFilter(Filter)办法大概设置文件体例绑定到对应的Logger或Handler。
清单1.一个Filter实例的完成- @Override
- publicbooleanisLoggable(LogRecordrecord){
- if(record.getThrown()!=null){
- returntrue;
- }else{
- returnfalse;
- }
- }
复制代码 <p>
手机用到的是用j2me所编出来的小程序。 |
|