??xml version="1.0" encoding="utf-8" standalone="yes"?>精品国产精品三级精品av网址 ,亚洲一二三区视频,国产精品久久久一区麻豆最新章节 http://www.aygfsteel.com/licweiwei/category/26522.htmlzh-cnWed, 24 Oct 2007 11:42:24 GMTWed, 24 Oct 2007 11:42:24 GMT60Commons-logging + Log4j 使用?/title><link>http://www.aygfsteel.com/licweiwei/articles/155095.html</link><dc:creator>licwei</dc:creator><author>licwei</author><pubDate>Mon, 22 Oct 2007 12:39:00 GMT</pubDate><guid>http://www.aygfsteel.com/licweiwei/articles/155095.html</guid><wfw:comment>http://www.aygfsteel.com/licweiwei/comments/155095.html</wfw:comment><comments>http://www.aygfsteel.com/licweiwei/articles/155095.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/licweiwei/comments/commentRss/155095.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/licweiwei/services/trackbacks/155095.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt; font-family: Times New Roman">通过|上查找资料和项目中的一些应用,记录一?font size="2">Commons-logging + Log4j </font>的用方法?br /> 现在很多都是使用Commons-logging + Log4j l合使用Q而不是全部用Log4j。common-logging,可以自行决定在自己的应用中采用何种实现Qƈ跟所依赖的jar包统一h?br /> 据common-logging的官Ҏ档,军_实现方式的策略如下: <br /> 1.首先查找org.apache.commons.logging.Log属性,该属性可以在java代码中设|,更常见的是在classpath下的common-logging.properties文g中进行设|?<br /> 2.在系l属性中查找org.apache.commons.logging.Log <br /> 3.如果c\径中有log4j的jar包,则采用log4j实现 <br /> 4.如果jdk版本?.4Q采用Jdk14Logger <br /> 5.采用common-logging提供的SimpleLog <br /> <br /> 所以只要在classpath中加入Log4j的jarQCommons-logging 后台使用的还是Log4j作ؓ日志实现cR单独用Log4j的时候需要初始化Q?br /> <br />    <p>                                    import org.apache.log4j.Logger; </p> <p>                                    import org.apache.log4j.PropertyConfigurator; </p> <p>                                    public class Log4j { </p> <p>                                        static Logger logger = Logger.getLogger(Log4j .class); </p> <p>                                        public static void main(String args[]) { </p> <p>                                        <span style="color: #333399">PropertyConfigurator.configure("log4j.properties"); </span></p> <p>                                         logger.debug("DEBUG");   </p> <p>                                         } </p> <p>                                      } <br /> </p> <br /> <p><font size="+0"><font face="Times New Roman"><font style="font-size: 10pt" size="3"></font></font></font> </p>   使用Commons-logging + Log4j 实现ҎQ?<br />                      <font size="2">import org.apache.commons.logging.Log;<br />                      import org.apache.commons.logging.LogFactory;</font><br /> </span>                <span style="font-size: 10pt">class TestLog{<br />                         public static Log log = LogFactory.getLog(TestLog.class);<br />                         public static void testLog(){<br />                         log.debug("test Commons-logging + Log4j");<br />                               }<br />                       }<br /> 只要classpath有Log4j的jarQ其实就是用Log4j作ؓ实现c,但是要注意的?font face="Times New Roman">log4j.properties</font>一定要在classpath中,之前一直不知道E序是如何去扑ֈ<font face="Times New Roman">log4j.properties</font>的,后来才发现是通过classpathL的,如果classpath中没有具体配|,是到当前类所在目录下L找(不包括包文g夹)?br /> <br /> log4j.properties介:<br /> log4j.rootCategory=debug, stdout, R  <br /> log4j.appender.stdout=org.apache.log4j.ConsoleAppender  <br /> log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  <br /> # Pattern to output the caller's file name and line number.  <br /> log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n  <br /> log4j.appender.R=org.apache.log4j.RollingFileAppender  <br /> log4j.appender.R.File=example.log  <br /> log4j.appender.R.MaxFileSize=100KB  <br /> # Keep one backup file  <br /> log4j.appender.R.MaxBackupIndex=1  <br /> log4j.appender.R.layout=org.apache.log4j.PatternLayout  <br /> log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n  <br /> 说明:  <br /> ①log4j.rootCategory = [ level ] , appenderName, appenderName,  <br /> 其中,level 是日志记录的优先U?分ؓOFF,FATAL,ERROR,WA R N,INFO,DEBUG, <br /> ALL或者您定义的?Log4j只用四个?优先U从高到低分别是ERROR, <br /> WA R N,INFO,DEBUG.通过在这里定义的U别,您可以控制到应用E序中相应别的?nbsp;<br /> 志信息的开?比如在这里定义了INFOU别,则应用程序中所有DEBUGU别的日志信?nbsp;<br /> 不被打印出?appenderName是指定日志信息输出到哪个地?您可以同时指定多?nbsp;<br /> 输出目的?  <br /> ②配|日志信息输出目的地Appender,其语法ؓ  <br /> log4j.appender.appenderName = fully.qualified.name.of.appender.class  <br /> log4j.appender.appenderName.option1 = value1  <br /> <br /> log4j.appender.appenderName.option = valueN  <br /> 其中,Log4j提供的appender有以下几U?  <br /> org.apache.log4j.ConsoleAppender(控制?,  <br /> org.apache.log4j.FileAppender(文g),  <br /> org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文?, <br /> org.apache.log4j.RollingFileAppender(文g大小到达指定寸的时候生一个新的文?,  <br /> org.apache.log4j.WriterAppender(日志信息以格式发送到L指定的地?  <br /> ③配|日志信息的格式(布局),其语法ؓ:  <br /> log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class  <br /> log4j.appender.appenderName.layout.option1 = value1  <br /> <br /> log4j.appender.appenderName.layout.option = valueN  <br /> 其中,Log4j提供的layout有以下几U?  <br /> org.apache.log4j.HTMLLayout(以HTML表格形式布局),  <br /> org.apache.log4j.PatternLayout(可以灉|地指定布局模式),  <br /> org.apache.log4j.SimpleLayout(包含日志信息的别和信息字符?,  <br /> org.apache.log4j.TTCCLayout(包含日志产生的时?U程,cd{等信息)  <br /> ④Log4J采用cMC语言中的printf函数的打印格式格式化日志信息,打印参数如下:  <br /> %m 输出代码中指定的消息  <br /> %p 输出优先U?即DEBUG,INFO,WA R N,ERROR,FATAL  <br /> %r 输出自应用启动到输出该log信息耗费的毫U数  <br /> %c 输出所属的cȝ,通常是所在类的全?nbsp; <br /> %t 输出产生该日志事件的U程?nbsp; <br /> %n 输出一个回车换行符,Windowsq_?\r\n",Unixq_?\n"  <br /> %d 输出日志旉点的日期或时?默认格式为ISO8601,也可以在其后指定格式,  <br /> 比如:%d{yyy MMM dd HH:mm:ss,SSS},输出cM:2002q?0?8?nbsp;22:10:28,921  <br /> %l 输出日志事g的发生位|?包括cȝ?发生的线E?以及在代码中的行? <br /> q里?点要说明的,<br /> <span style="color: #333399">一是关于log4j.appender.R.File=example.log Q如果不l定l对路径的话Qlog文g的默认\径是user.dirQ可以通过System.getProperty("user.dir")来得到?br /> 而是关于%5p [%t] (%F:%L) - %m%n   5代表优先U字W串占用几个位置Q?F代表文g名,%L代表行号?br /> </span><br /> 使用xml来充当配|,没有ȝq,所以也不了解,但是在网上也看到q依赖jar包里的log4j配置自己应用的log4j.properties屏蔽掉的问题Q说是classpath中的jxls-core-0.9.5.jar中的log4j.xml,该配|优先于他的log4j.propertiesQ导致log4j.properties讄失效Q不q不太了解是什么原因,但是有hl出了解x案,<br /> <p>手工重新 configure一下:</p> <p>org.apache.log4j.LogManager.resetConfiguration(); <br /> 然后Q?/p> <p>org.apache.log4j.PropertyConfigurator.configure("c:/yourlog4j.properties");</p> <p>或?/p> <p>org.apache.log4j.xml.DOMConfigurator.configure("c:/yourlog4j.xml");<br /> </p> <br /> <br /> <br /> <br /> <br /> <br /> </span> <img src ="http://www.aygfsteel.com/licweiwei/aggbug/155095.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/licweiwei/" target="_blank">licwei</a> 2007-10-22 20:39 <a href="http://www.aygfsteel.com/licweiwei/articles/155095.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XML文g处理Q一Q?/title><link>http://www.aygfsteel.com/licweiwei/articles/152726.html</link><dc:creator>licwei</dc:creator><author>licwei</author><pubDate>Sun, 14 Oct 2007 07:04:00 GMT</pubDate><guid>http://www.aygfsteel.com/licweiwei/articles/152726.html</guid><wfw:comment>http://www.aygfsteel.com/licweiwei/comments/152726.html</wfw:comment><comments>http://www.aygfsteel.com/licweiwei/articles/152726.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/licweiwei/comments/commentRss/152726.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/licweiwei/services/trackbacks/152726.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt"> </span><span style="font-size: 10pt"><span style="font-size: 10pt; font-family: Arial">   ?Java 领域 XML 文g的技术大致分Zc?XML API ?OXMapping.XML API ?XML 处理的基Q可选技术包括JDOM,Dom4j{;OXMapping ?Object-XML Mapping 的简Uͼq种技术隐藏了 XML 底层操作的细节,可以?XML 文g映射成一?JavaBean 对象Q也可以把一?JavaBean 对象保存成一?XML 文gQ可选技?XStream ?Digester ?Castor {?XML API ?OXMapping 的关pȝg JDBC ?ORMaping 的关p, OXMapping 内部实现使用 XML API 来完成,两种实现技术从不同的层面实C XML 的处理?br /> <br /> </span>    <span style="font-size: 10pt; font-family: Arial">XML API </span></span> <p><span style="font-family: Arial"><span style="font-size: 10pt"><span style="font-size: 10pt">   此类 XML 处理技术中最行的莫q于<span style="font-family: Arial"><span style="font-size: 10pt"><span style="font-size: 10pt">DOM4J </span></span></span>了,</span></span></span><span style="font-family: Arial"><span style="font-size: 10pt"><span style="font-size: 10pt">DOM4J 是一个非帔R怼U的Java XML APIQ具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的Y件。如今你可以看到来多?Java 软g都在使用 DOM4J 来读?XMLQ特别值得一提的是连 Sun ?JAXM 也在?DOM4J</span></span></span><span style="font-size: 10pt"><span style="font-family: Arial"><span style="font-size: 10pt"><br /> <br /> </span></span>   <span style="font-family: Arial">  <span style="font-size: 10pt">OXMapping </span></span></span></p> <p><span style="font-family: Arial"><span style="font-size: 10pt"><span style="font-size: 10pt">    使用 XML API 解析是略昄琐的Q受 ORMapping 技术的启发Qh们发明了 OXMapping 技术,使用 OXMapping 技术,我们可以?XML 文g映射成一?JavaBean 对象Q也可以把一?JavaBean 对象保存成一?XML 文gQ这大大化了我们的开发工作量Q得开发h员能更多的关注应用层面的东西?</span></span></span></p> <p><span style="font-family: Arial"><span style="font-size: 10pt">  <span style="font-size: 10pt">  开源世界中涌现出很?OXMapping 框架Q包?XStream ?Digester ?Castor {?其中Digester ?#8220;开源名?#8221; Apache 下的子项目,|上可以参考的资料很多?/span><br /> </span></span></p> <p><br /> </p> <img src ="http://www.aygfsteel.com/licweiwei/aggbug/152726.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/licweiwei/" target="_blank">licwei</a> 2007-10-14 15:04 <a href="http://www.aygfsteel.com/licweiwei/articles/152726.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tai Wan Shroff的arnList http://www.aygfsteel.com/licweiwei/articles/152618.htmllicweilicweiSat, 13 Oct 2007 10:59:00 GMThttp://www.aygfsteel.com/licweiwei/articles/152618.htmlhttp://www.aygfsteel.com/licweiwei/comments/152618.htmlhttp://www.aygfsteel.com/licweiwei/articles/152618.html#Feedback0http://www.aygfsteel.com/licweiwei/comments/commentRss/152618.htmlhttp://www.aygfsteel.com/licweiwei/services/trackbacks/152618.html今天打算修改Tai Wan Shroff的传递arnList方式.

开始以为用一个static 变量来保存这个List可以了Q还自我得意了一下,以ؓ改进很大。当时在意的是这个static变量会不会被垃圾回收Q后来上|查了很多才发现static变量是很JVM共存亡的。只要class被loadq入容器Q就会一直存在于容器?/font>

后来陈林一提醒才发现这有多么愚蠢,只要q个功能出现q发讉KQ那arnList成了随意修改了Q收׃ؕ套了.......后来又想了一个办法,Z个static的map用一个随机的32C为keyQ来作ؓ一ơ访问的唯一标识Q每ơsearchӞ。不q用map的话要注意内存的回收Q用完过后要把每ơ的映射删除Q不然内存就暴掉了?/font>

不过后来发现search功能是随旉可以做的Q根本就无法删除无用的映,q个Ҏ又流产了。最后无奈只好还是用原来的笨Ҏ把arnList hidden在页面上?/font>

觉得struts不能传递List实在是太挫了。只能用数组来@环List中的数据Q不知道其他的框架可不可以传递List?/font>

发现对java的了解还是太了Q一q多一炚wq也没有。哎?/font>



licwei 2007-10-13 18:59 发表评论
]]>
վ֩ģ壺 | ɽ| Ͽ| | | ̨ʡ| | Ϫ| | Ž| | | | | | ʯ| | ǰ| | | Ĭ| ˫| | | | | | | ׺| ī| ʡ| е| ɽ| ī| | | | ɽ| ̨| | |