??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美日韩成人一区,高清欧美性猛交xxxx黑人猛交,国产精品s色http://www.aygfsteel.com/lhulcn618/category/4199.htmlJava各方面技术、Web各方面技术、h生与爱情感?zhn)、双子_英的感受、双子与水瓶?/description>zh-cnWed, 28 Feb 2007 03:33:53 GMTWed, 28 Feb 2007 03:33:53 GMT60对于IoC的概要介l?/title><link>http://www.aygfsteel.com/lhulcn618/articles/17553.html</link><dc:creator>北国gh的BloG</dc:creator><author>北国gh的BloG</author><pubDate>Mon, 31 Oct 2005 07:48:00 GMT</pubDate><guid>http://www.aygfsteel.com/lhulcn618/articles/17553.html</guid><wfw:comment>http://www.aygfsteel.com/lhulcn618/comments/17553.html</wfw:comment><comments>http://www.aygfsteel.com/lhulcn618/articles/17553.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.aygfsteel.com/lhulcn618/comments/commentRss/17553.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/lhulcn618/services/trackbacks/17553.html</trackback:ping><description><![CDATA[     摘要: 原文Qhttp://today.java.net/pub/a/today/2004/02/10/ioc.html 此文章意在介l反转模?Inversion Of Control)的概念以?qing)它是如何简化ƈ更有效率的进行应用程序的设计。我们将察看IoC框架的不同类型。通过展示IoC能够带来更简单,更灵zȝ代码Q你也将能够看到Z么IoC吸引了这么多的兴?IoC理论 描述IoC是什么和它能?..  <a href='http://www.aygfsteel.com/lhulcn618/articles/17553.html'>阅读全文</a><img src ="http://www.aygfsteel.com/lhulcn618/aggbug/17553.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/lhulcn618/" target="_blank">北国gh的BloG</a> 2005-10-31 15:48 <a href="http://www.aygfsteel.com/lhulcn618/articles/17553.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Log4j Ҏ(gu) java.util.logginghttp://www.aygfsteel.com/lhulcn618/articles/16996.html北国gh的BloG北国gh的BloGThu, 27 Oct 2005 04:37:00 GMThttp://www.aygfsteel.com/lhulcn618/articles/16996.htmlhttp://www.aygfsteel.com/lhulcn618/comments/16996.htmlhttp://www.aygfsteel.com/lhulcn618/articles/16996.html#Feedback0http://www.aygfsteel.com/lhulcn618/comments/commentRss/16996.htmlhttp://www.aygfsteel.com/lhulcn618/services/trackbacks/16996.html原文地址http://java.sys-con.com/read/48541.htm

北国gh 译

哪一个库更适合你呢Q?/DIV>
 
摘要
 
你的JavaE序是否被很多随x|的System.out.println语句和stack traces(例如:ex.printStackTrace())弄ؕ呢?当你加入调试信息到工E中的类中,你的信息输出是否I插于其他开发者的很多信息中,使得(zhn)的信息很难辨认和读取呢Q你是否使用单的日志APIQƈ担心它可能不能提供?zhn)需要的_的弹性和能力Q当(zhn)的E序已存在于产品中时呢?如果以上的问题的{案都是YesQ到了你该选择一个工业和强大的日志API和用它的时候了Q?/DIV>
 
q篇文章通过评估两种qؓ(f)使用的Java日志库:(x)the Apache Group's Log4j和java.util.logging包(使用JUL代替Q,来帮助?zhn)选择日志API。这个文章调查了每一个库如何实现日志Q评价他们的区别和相似点Qƈ提供一些简单的指导路线Q可以帮助?zhn)军_选择哪一个库?/DIV>
 
Log4j的介l?/DIV>
Log4j是一个开源日志库Q被开发ؓ(f)Apache Software Foundation's日志服务目的一个子目。基于IBM开发的日志库早?990q_(d)它的W一个版本出现在1999。Log4j是一个广Z用在开源社区,包括一些大型项目比如JBoss和Hibernate?/DIV>
 
Log4j的架构徏立于三个大的概念上面Qloggers,appenders,和layouts.Q日志子Q追加器Q布局器)。这些概念允许开发者记录信息根据他们的cd和优先Q和来控制信息在哪结束以?qing)他们的形式。loggers是你的应用程序首先调用的对象Q用来初始化信息的日志记录。当loggers被给与一条信息来记录Qloggers生成了Logging-Event对象来进行封装给定信息。该loggers此时交接LoggingEventsl它们关联的appender。Appenders发送LoggingEvents包含的信息到指定的输出目的地。例如,一个ConsoleAppender信息写到System.out或者一个FileAppender它附加于一个文件中。在发送LoggingEvent信息到最后输出目的地之前Q一些appender使用布局器来创徏以预期格式格式化的对于信息的文本表达。例如,Log4j包括了XMLLayoutcL用于格式化loggingEvents以XML的字W串?/DIV>
 
在Log4j中,LoggingEvent被赋予一个别来指定他们的优先。在Log4j中的默认U别Q从高到低)QOFF,FATAL,ERROR,WARN,INFO,DEBUG,和ALL.
Loggers和appenders也被分配C个别,q且只有当loggingh的别比他们的别相{ƈ且更大时Q才?x)执行。例如,如果一个appender他的U别是ERRORQ它被请求输Z个有着WARN的别的LoggingEventQappender不?x)写l与的logEvent?/DIV>
 
Log4j中的所有loggers有一个名字。Log4jl织logger实例C个树(wi)型的l构中,Ҏ(gu)他们名字Q同Java语言中的包的l织一栗正如Log4j的文档简z的表述Q“一个logger被认为是另外的logger的祖先,如果它的名字紧跟着一个点是后代的q个logger名字的前~。”例如,一个名?org.nrdc"被认为是"org"logger的子代?org.nrdc.logging"logger?org.nrdc" logger的子代,q且?org" logger的重子代。如果logger的没有明的指定U别Q它?x)用已l赋予别的最q的父辈的别。Loggersl承appenders从他们的父类Q尽他们也能被配置只用直接赋l他们的appender?/DIV>
 
当一个logger被请求来记录信息Q它首先查请求的U别是否比它的有效别相同或者更大。如果是Q它?yu)创建LoggingEventҎ(gu)l定的信息,q传送LoggingEvent到它的appendersQ格式它Qƈ发送它到输出目的地?/DIV>
 
JUL的介l?/DIV>
 
java.util.logging包,Sun?002q?Java SDK 1.4中介l了它,作ؓ(f)JSR 47到来?Logging API 规范。JUL非常cM于Log4j - 它多多少的正确的用了同样的概念,但是对他们重新命名了。例如,appenders ?“handlers?layout ?“formatters”,q且LoggingEvent叫做“LogRecords”。图?Q汇MLog4j和JUL的名U和概念。JUL使用U别与Log4j使用U别是一L(fng)Qƈ且JUL日志l承属性properties从他们父loggers中,有点像Log4jl承属性从父层ơ中。从Log4j到JUL概念几乎是一对一的;虽然两个库在l节上有所不同QQ何熟(zhn)Log4j的开发者只需要调整他们的词库可以理解JUL?/DIV>
 
功能不同?/DIV>
 
虽然Log4j和JUL几乎有同L(fng)概念Q他们在功能上不同。他们的可以归纳为,“无论JUL能不能做成什么,Log4j都能?- q且做得更多。”他们主要在几个领域不同Qappender/handler的实玎ͼ有用的格式化?布局实现器,和配|灵zL上?/DIV>
 
JUL包含4U具体的handler的实玎ͼ而Log4j则包括超q?2个的appender实现。JUL的handler_用来q行基本的日志记?- 他们允许你写入到一个buffer,一个console,一个socketQ和一个file中。Log4j的appendersQ另一斚wQ大概覆盖了所有logging输出目的C可以惛_的。他们可以写到NT日志或者Unix syslog中,或者甚臛_送Email。图?提供了JUL的handler和Log4j的appenders的汇怅R?/DIV>
 
JUL包含了两个格式化c:(x)XMLFormatter和SimpleFormatter。Log4j包含了对应的布局?XMLLayout和SimpleLayout.Log4jq提供了TTCCLayoutQ它格式化LoggingEvents到富内容字符Ԍ和HTMLLayoutQ它可格式化LoggingEvent到HMTL表格中?/DIV>
 
TTCCLayout和HTMLLayout都很有用QLog4j的确领先于JULQ在formatter/handler斚wQ由于PatternLayout。PatternLayout实例能够采用一个通过字符转换式模式而带来具有大量有Ҏ(gu)的被配|,cM于在C中的printf函数的表辑ּcd。在PatternLayout转换式模式中Q特定{化字W被用来指定在布局格式化输出的信息。例如,"%t"被用来指定开始记录信息的U程Q?%C"被用于开始记录信息的对象的类的名Uͼq且"%m"指定了信息?%t: %m"导致输出类gq样"main thread:This is my message." "%C - %t:%m"?x)导致输出类g"org.nrdc.My-Class - main thread:This is my message." Pattern-Layout非常有用Q然而JUL的两个formattercL有Q何地Ҏ(gu)匚wq样的多功能性。对于JUL使用者,自行定制formattercL很少见,反之大多数Log4j用户通常需要学?x)如何用PatternLayout转换式模式?/DIV>
 
Log4j和JUL同时都能够用配|文件进行配|,Log4j允许更广范围内的配置的可能性相对于JUL使用的配|文件。JUL能够使用.properties文g配置Q但是到了J2SE5.0之前Qhandlers的配|只能是对于每一个类的而不是对于每一个实例。这意味着如果你将使用Tiger版本的SDK,你将遗漏有用的配|选择Q例如可以设|不同的FileHandler实例发送他们的输出C同的文g中?/DIV>
 
非常重要的,注意Tiger版的JUL能够很容易的被配|ؓ(f)写到多个文gQ通过~写代码Q而不是通过默认的配|机制。Log4j能够通过.properties文g或者XML文g配置Qƈ且appenders能够以每一个实例ؓ(f)基础q行配置。同ӞLog4j允许开发者关联布局实例和appender实例Qƈ以每一个实例ؓ(f)基础q行配置布局。这包括PatternLayout实例 - 你能够设|{换式每一个模式的使用Q在配置文g中。在开发过E中Q通过重新~译来调整日志配|不是问题,开发结束后Q然而,你或怸想通过重新~译来改变或者完全重新配|应用中的日志。这ӞLog4j提供了更多的Ҏ(gu),其使用Tiger?/DIV>
 
Log4j提供了很多JUL~少的功能,虽然JUL正在赶上。JUL可以完全扩展后,来做Log4j做的事情 - 你可以写更多的handlersQ重新实现PatternLayout来ؓ(f)JULQƈ且更新JUL配置机制Q这些都不是很难。但是要在Log4j已存在这些特色数q时Qؓ(f)什么还做这些事呢?
 
你要选择哪一个库呢?
 
cM于这L(fng)重要军_l常使得leadersq或者过早衰老。幸q的是,q个军_可以通过对于简单的问题后,Ҏ(gu)的做出?/DIV>
 
问题1
你过早需要那些JUL没有而Log4j有的handlersQ例如SMTPHandler,NTEventLogHandler,或者其他Q何非怾利的FileHandlers?
 
问题2
你是否想频繁的切换你日志输出的格式?你是否需要简单的方式q样做?另外Q你是否需要Log4j的PatternLayoutQ?/DIV>
 
问题3
你是否明的需要在(zhn)的应用中有q种能力Q来改变复杂的日志配|在(zhn)的应用中,即他们已经被编译了q且部vC品环境了Q你的配|是不是听v来像Q“来自这个类的几条信息通过邮g发送给技术支持工作者;cd集的几条信息被记录于我们服务器的syslog中;cd集的警告信息以一个文件记录于|络盘A中;q且各处所有信息以文g记录于网l磁盘B”?你是否没q?0几天Q就?x)改变一下?
 
如果你对上面的问题都回答YesQ用Log4j。如果你的回{全是明的NoQJUL_了,它已存在SDK中了?/DIV>
 
l论
Log4j和JUL是非常相似的API。他们只在一些细节上不同Q最后做的是同样的事情,除了Log4j有了更多的特Ԍ但也怽用不到?/DIV>
 
紧记Q当你移植到你选择的日志库Q那么日志将影响应用的性能。得媄响最化的方法,是量的重用loggers的引用;保存静态或者引用指针到l(f)oggersQ而不是每ơ你需要一个loggerӞ调用Logger.getLogger("loggerName")。log表达式放|于公有区域Q而不是@环中?/DIV>
 
q篇文章不是深入研究如何使用Log4j或者JUL的教E,q且Q实际上Q演CZ两个库很多的有用的特点,例如MBeans支持QJ2SE5.0Q你能够讄JUL记录U别q程的通过JMXQ,和ResourceBundle支持。还有很多Log4j的高U特点,例如filter铑֒Object-Renderers。因特网有很多如何用他们的教程QJDJ中也有;在编码之前,一定找到ƈ学习(fn)他们?/DIV>
 
 
 
资源
 
  • Log4j's home page: http://logging.apache.org/log4j
  • JUL's home page: http://java.sun.com/j2se/1.4.2/docs/guide/util/logging
  • Aggarwal, V."Third Party Logging API." Java Developer's Journal, Vol. 5, issue 11: http://sys-con.com/story/?storyid=36144
  • Banes, J. "Building the Ultimate Logging Solution." Java Developer's Journal, Vol. 9, issue 5: http://sys-con.com/story/?storyid=44698
  • Writing a sweet Log4j Appender that sends instant messages: www.106.ibm.com/developerworks/java/library/j-instlog/
  • For those who don't like JUL or Log4j, try the Logging Toolkit for Java from IBM: www.alphaworks.ibm.com/tech/loggingtoolkit4j


  • 北国gh的BloG 2005-10-27 12:37 发表评论
    ]]> վ֩ģ壺 ƺ| | ߰| ½| | | | | | | | | | Ī| ̶| | ƽɽ| | | | ɽ| | | Ӽ| | Դ| ɽ| Ž| г| | | ѽ| | | | º| | | ɼ| ͨ| |