仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 470|回复: 9
打印 上一主题 下一主题

[学习教程] 来看Java日记缓存机制的完成

[复制链接]
不帅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:01:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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实例的完成
  1. @Override
  2. publicbooleanisLoggable(LogRecordrecord){
  3. if(record.getThrown()!=null){
  4. returntrue;
  5. }else{
  6. returnfalse;
  7. }
  8. }
复制代码
<p>
手机用到的是用j2me所编出来的小程序。
深爱那片海 该用户已被删除
沙发
发表于 2015-1-20 12:45:34 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
再见西城 该用户已被删除
板凳
发表于 2015-1-29 07:09:56 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
愤怒的大鸟 该用户已被删除
地板
发表于 2015-2-5 23:57:02 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
老尸 该用户已被删除
5#
发表于 2015-2-14 09:28:41 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
飘灵儿 该用户已被删除
6#
发表于 2015-3-11 17:30:04 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
第二个灵魂 该用户已被删除
7#
发表于 2015-3-19 03:47:24 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
兰色精灵 该用户已被删除
8#
发表于 2015-3-27 07:09:50 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
乐观 该用户已被删除
9#
发表于 2015-3-27 07:09:51 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
海妖 该用户已被删除
10#
发表于 2015-3-27 07:09:51 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-21 02:34

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表