﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-走上山颠的技术之路-文章分类-埋头编程</title><link>http://www.blogjava.net/tedeyang/category/7601.html</link><description>路漫漫其修远兮，我要吃只没有感冒的鸡</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 07:27:06 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 07:27:06 GMT</pubDate><ttl>60</ttl><item><title>分别用了两种流实现在Java中执行本地程序——为什么不能用Reader呢？</title><link>http://www.blogjava.net/tedeyang/articles/20061.html</link><dc:creator>山颠</dc:creator><author>山颠</author><pubDate>Wed, 16 Nov 2005 07:03:00 GMT</pubDate><guid>http://www.blogjava.net/tedeyang/articles/20061.html</guid><wfw:comment>http://www.blogjava.net/tedeyang/comments/20061.html</wfw:comment><comments>http://www.blogjava.net/tedeyang/articles/20061.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tedeyang/comments/commentRss/20061.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tedeyang/services/trackbacks/20061.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用startProcessByReader()执行javac命令没有问题，而执行java命令就会阻塞，不知道怎么回事。startProcess（）函数就不会产生这样的问题。难道本地命令执行时返回的不能用Reader？    &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;需研究jd...&nbsp;&nbsp;<a href='http://www.blogjava.net/tedeyang/articles/20061.html'>阅读全文</a><img src ="http://www.blogjava.net/tedeyang/aggbug/20061.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tedeyang/" target="_blank">山颠</a> 2005-11-16 15:03 <a href="http://www.blogjava.net/tedeyang/articles/20061.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jEdit应用指南【基础篇】</title><link>http://www.blogjava.net/tedeyang/articles/18951.html</link><dc:creator>山颠</dc:creator><author>山颠</author><pubDate>Wed, 09 Nov 2005 03:29:00 GMT</pubDate><guid>http://www.blogjava.net/tedeyang/articles/18951.html</guid><wfw:comment>http://www.blogjava.net/tedeyang/comments/18951.html</wfw:comment><comments>http://www.blogjava.net/tedeyang/articles/18951.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/tedeyang/comments/commentRss/18951.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tedeyang/services/trackbacks/18951.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: jEdit应用指南【基础篇】作者:tedeyang创作时间:2005年9月24日 &nbsp; 序&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jEdit是一个非常强大和灵活的文本编辑器.在java开发过程中,我一直使用eclipse,UltraEdit和jEdit.经常在它们之间来回切换.因为ultraEdit太简单,而eclipse又太复杂,所以现在我要介绍...&nbsp;&nbsp;<a href='http://www.blogjava.net/tedeyang/articles/18951.html'>阅读全文</a><img src ="http://www.blogjava.net/tedeyang/aggbug/18951.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tedeyang/" target="_blank">山颠</a> 2005-11-09 11:29 <a href="http://www.blogjava.net/tedeyang/articles/18951.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DreamWeaver的Velocity插件</title><link>http://www.blogjava.net/tedeyang/articles/18941.html</link><dc:creator>山颠</dc:creator><author>山颠</author><pubDate>Wed, 09 Nov 2005 02:51:00 GMT</pubDate><guid>http://www.blogjava.net/tedeyang/articles/18941.html</guid><wfw:comment>http://www.blogjava.net/tedeyang/comments/18941.html</wfw:comment><comments>http://www.blogjava.net/tedeyang/articles/18941.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tedeyang/comments/commentRss/18941.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tedeyang/services/trackbacks/18941.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用FrontPage可以很方便的预览vm文件，见梁夏峰的《<font color="#ff0000">Velocity</font>之Web实践》一文：<a href="http://www.javayou.com/showlog.jspe?log_id=528">http://www.javayou.com/showlog.jspe?log_id=528</a>，其中这样说道：&ldquo;</p>
<p><font color="#0099cc">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打开FrontPage（或其他类似工具）网页编辑器，点击&quot;工具－选项－配置编辑器&quot;，上面列出了FrontPage能打开的文件，点击添加，填入文件类型：vm，编辑器名称：FrontPage，命令：C:\Program Files\Microsoft Office\Office\frontpg.exe（FrontPage运行的完整路径，可从已有的文件类型中Copy出完整路径），点击打开界面的确定后，我们从FrontPage的文件菜单中选择打开文件，选择上面新建的sample.vm，怎么样，编辑、预览和修改都一目了然吧（如下图），即使不清楚VTL的，也可以通过简单的手册查询知道（一般都不会用到吧），这样对于网页设计师、开发人员和维护人员来说，都是很容易的事。而如果你使用了一些开发工具，如Jbuilder则在tools－proference的编辑类型里，在Html档增加.vm的支持，则就可以进行编辑和用html预览器预览了，其他的开发工具自己摸索吧。<font color="#000000"> &rdquo;</font></font></p>
<p><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然而在DreamWeaver中我怎么样改配置也不行。于是用google大神上网求助，终于发现了这个好东西：DreamWeaver的Velocity插件：<a href="http://velocity.gilluminate.com/">http://velocity.gilluminate.com/</a>，作者比我强多了，自己动手，丰衣足食啊，呵呵。下载后用用DreamWeaver的插件管理器安装，对，就是那个VelocitySuite.mxp文件。</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这样一来，DreamWeaver在编辑vm时能提供的功能就大大超过其他html编辑器了。爽啊。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;不过作者还说了几个注意点，如果你在使用过程中觉得有问题，可以去他的主页<a href="http://velocity.gilluminate.com/">http://velocity.gilluminate.com/</a>看看。这里就不再多言了。<br /><font color="#0099ff"></font><font color="#0099ff">&nbsp;<br /></font></p><img src ="http://www.blogjava.net/tedeyang/aggbug/18941.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tedeyang/" target="_blank">山颠</a> 2005-11-09 10:51 <a href="http://www.blogjava.net/tedeyang/articles/18941.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>log4j/log4e的使用（转载）</title><link>http://www.blogjava.net/tedeyang/articles/18936.html</link><dc:creator>山颠</dc:creator><author>山颠</author><pubDate>Wed, 09 Nov 2005 02:41:00 GMT</pubDate><guid>http://www.blogjava.net/tedeyang/articles/18936.html</guid><wfw:comment>http://www.blogjava.net/tedeyang/comments/18936.html</wfw:comment><comments>http://www.blogjava.net/tedeyang/articles/18936.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tedeyang/comments/commentRss/18936.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tedeyang/services/trackbacks/18936.html</trackback:ping><description><![CDATA[<h3>&nbsp;</h3>
<p>&nbsp;</p>
<div>Copy from 一个女生的blog文章：<a href="/cinderella/archive/2005/06/13/6030.html">log4j/log4e的使用</a> </div>
<p><font size="2">&nbsp;原文作者：天才&nbsp; &nbsp; Kylin项目小组</font></p>
<font size="2">log4j简介<br /></font><font size="2">简单的说log4j就是帮助开发人员进行日志输出管理的API类库。它最重要的特点就<br /></font><font size="2">可以配置文件灵活的设置日志信息的优先级、日志信息的输出目的地以及日志信息的输出格式。<br /></font><font size="2"><span>Log4j除了可以记录程序运行日志信息外还有一重要的功能就是用来</span>显示调试信息。程序员经常会遇到脱离<span>java ide环境调试程序的情况，这时大多数人会选择使用System.out.println语句输出某个变量值的方法进行调试。这样会带来一个非常麻烦的问题：一旦哪天程序员决定不要显示这些System.out.println的东西了就只能一行行的把这些垃圾语句注释掉。若哪天又需调试变量值，则只能再一行行去掉这些注释恢复System.out.println语句。使用log4j可以很好的处理类似情况。<br /></span></font><font size="2">log4j使用方法<br /></font><font size="2">下面介绍的是log4j一些理论方面的知识，读者觉得枯燥的话可以跳过本节直接阅读第三节实例部分。<br /></font><font size="2">　　1、定义配置文件<br /></font><font size="2">　&nbsp; 首先使用配置文件将使我们的应用程序更加灵活配置log日志输出方式包括输出优先级、输出目的地、输出格式。Log4j支持两种配置文件格式，一种是XML格式的文件，一种是Java特性文件log4j.properties（键=值）。下面将介绍使用log4j.properties文件作为配置文件的方法：<br /></font><font size="2">　　①配置根Logger，其语法为：0<br /></font><font size="2">　　log4j.rootLogger = [ level ] , appenderName, appenderName, &hellip; <br /></font><font size="2">　　其中，level 是日志记录的优先级，分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。Log4j建议只使用四个级别，优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别，您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别，则应用程序中所有DEBUG级别的日志信息将不被打印出来。 appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。 <br /></font><font size="2">　　②配置日志信息输出目的地Appender，其语法为：<br /></font><font size="2">　　</font><font size="2">log4j.appender.appenderName = fully.qualified.name.of.appender.class <br />　　log4j.appender.appenderName.option1 = value1 <br />　　&hellip; <br />　　log4j.appender.appenderName.option = valueN <br /></font><font size="2">　　其中，</font><font size="2">Log4j提供的appender有以下几种： <br />　　org.apache.log4j.ConsoleAppender（控制台）， <br />　　org.apache.log4j.FileAppender（文件）， <br />　　org.apache.log4j.DailyRollingFileAppender（每天产生一个日志文件），<br />　　org.apache.log4j.RollingFileAppender（文件大小到达指定尺寸的时候产生一个新的文件）， <br />　　org.apache.log4j.WriterAppender（将日志信息以流格式发送到任意指定的地方） <br /></font><font size="2">　 ③配置日志信息的格式（布局），其语法为：<br /></font><font size="2">　　</font><font size="2">log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class <br />　　log4j.appender.appenderName.layout.option1 = value1 <br />　　&hellip; <br />　　log4j.appender.appenderName.layout.option = valueN <br /></font><font size="2">　　其中，</font><font size="2">Log4j提供的layout有以下几种： <br />　　org.apache.log4j.HTMLLayout（以HTML表格形式布局）， <br />　　org.apache.log4j.PatternLayout（可以灵活地指定布局模式）， <br />　　org.apache.log4j.SimpleLayout（包含日志信息的级别和信息字符串）， <br />　　org.apache.log4j.TTCCLayout（包含日志产生的时间、线程、类别等等信息） <br /></font><font size="2">　　Log4J采用类似C语言中的printf函数的打印格式格式化日志信息，打印参数如下： %m 输出代码中指定的消息<br /></font><font size="2">　　</font><font size="2">%p 输出优先级，即DEBUG，INFO，WARN，ERROR，FATAL <br />　　%r 输出自应用启动到输出该log信息耗费的毫秒数 <br />　　%c 输出所属的类目，通常就是所在类的全名 <br />　　%t 输出产生该日志事件的线程名 <br />　　%n 输出一个回车换行符，Windows平台为&ldquo;\r\n&rdquo;，Unix平台为&ldquo;\n&rdquo; <br />　　%d 输出日志时间点的日期或时间，默认格式为ISO8601，也可以在其后指定格式，比如：%d{yyy MMM dd HH:mm:ss,SSS}，输出类似：</font><font size="2">2002年10月18日</font><font size="2"> 22：10：28，921 <br />　　%l 输出日志事件的发生位置，包括类目名、发生的线程，以及在代码中的行数。举例：Testlog4.main(TestLog4.java:10) <br /></font><font size="2">　　2、在代码中使用Log4j <br /></font><font size="2">　　①得到记录器<br /></font><font size="2">　　使用Log4j，第一步就是获取日志记录器，这个记录器将负责控制日志信息。其语法为： <br /></font><font size="2">　　public static Logger getLogger( String name) <br /></font><font size="2">　　通过指定的名字获得记录器，如果必要的话，则为这个名字创建一个新的记录器。Name一般取本类的名字，比如： <br /></font><font size="2">　　static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () )<br /></font><font size="2">　　②读取配置文件 <br /></font><font size="2">　　当获得了日志记录器之后，第二步将配置Log4j环境，其语法为：<br /></font><font size="2">BasicConfigurator.configure ()： 自动快速地使用缺省Log4j环境。<br />　　PropertyConfigurator.configure ( String configFilename) ：读取使用Java的特性文件编写的配置文件。<br /></font><font size="2">例：PropertyConfigurator.configure(&quot;.\\src\\log4j.properties&quot;)</font><br /><font size="2">　　DOMConfigurator.configure ( String filename ) ：读取XML形式的配置文件。<br /></font><font size="2">　　③插入记录信息（格式化日志信息）<br /></font><font size="2">　　当上两个必要步骤执行完毕，就可轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方，其语法如下：<br /></font><font size="2">　　</font><font size="2">Logger.debug ( Object message ) ;<br />　　Logger.info ( Object message ) ;<br />　　Logger.warn ( Object message ) ;<br />　　Logger.error ( Object message ) ;<br /></font><font size="2">log4j范例程序<br /></font><font size="2">下面将使用一个最简单的范例程序来进一步说明log4j的使用方法。程序代码如下：<br /></font>
<p><font size="2"><font size="2">import org.apache.log4j.*;<br /></font><font size="2">&nbsp;<br /></font><font size="2">public class LogTest {<br /></font><font size="2">&nbsp;<br /></font><font size="2">&nbsp;<br /></font><font size="2">&nbsp;&nbsp;&nbsp; static Logger logger = Logger.getLogger(LogTest.class.getName());<br /></font><font size="2">&nbsp;<br /></font><font size="2">&nbsp;&nbsp;&nbsp; public static void main(String[] args) {<br /></font><font size="2">&nbsp;<br /></font><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PropertyConfigurator.configure ( &ldquo;.\\src\log4j.properties&rdquo;)；<br /></font><font size="2">logger.debug(&quot;Debug ...&quot;);<br /></font><font size="2">&nbsp;<br /></font><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.info(&quot;Info ...&quot;);<br /></font><font size="2">&nbsp;<br /></font><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.warn(&quot;Warn ...&quot;);<br /></font><font size="2">&nbsp;<br /></font><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.error(&quot;Error ...&quot;);<br /></font><font size="2">&nbsp;<br /></font><font size="2">&nbsp;&nbsp;&nbsp; }<br /></font><font size="2">}<br /></font><font size="2">程序说明：<br /></font><font size="2">① static Logger logger = Logger.getLogger(LogTest.class.getName());就是创建一个属于LogTest类的Logger对象，创建时要告知Logger你当前的Class是什么。<br /></font>②<font size="2"> PropertyConfigurator.configure ( &ldquo;log4j.properties&rdquo;)就是说使用当前工程目录下的src文件夹中的log4j.properties文件作为配置文件。若将log4j.properties放在工程根目录下也可不写此句，程序会自动找到配置文件。<br /></font>③ logger.debug就是输出debug的信息，logger.info就是输出提示信息，logger.warn就是显示警告信息，logger.error就是显示错误信息。<br />下面是配置文件log4j.properties的内容：<br /><font size="2">log4j.rootCategory=DEBUG, stdout，R<br /></font><font size="2">log4j.appender.stdout=org.apache.log4j.ConsoleAppender<br /></font><font size="2">log4j.appender.stdout.layout=org.apache.log4j.PatternLayout<br /></font><font size="2">log4j.appender.stdout.layout.ConversionPattern=%5p (%F:%L) - %m%n<br /></font><font size="2">log4j.appender.R=org.apache.log4j.RollingFileAppender<br /></font><font size="2">log4j.appender.R.File=log.txt<br /></font><font size="2">log4j.appender.R.MaxFileSize=100KB<br /></font><font size="2">log4j.appender.R.MaxBackupIndex=1<br /></font><font size="2">log4j.appender.R.layout=org.apache.log4j.PatternLayout<br /></font><font size="2">log4j.appender.R.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss} %-5p %c - %m%n<br /></font><font size="2">程序说明：<br /></font><font size="2">① log4j.rootCategory=DEBUG, stdout，R<br /></font>就是说我要显示所有优先权等於和高于Debug的信息。<br />&quot;stdout&quot;，&rdquo;R&rdquo;表示我定义了两个输出端(随便什么名字都好)。<br />②下面的三行说stdout输出端其实是标准输出Console，也就是屏幕。输出的格式是Pattern<font size="2">Layout。转换方式是%5p (%F:%L) - %m%n，即前五格用来显示优先权，再显示当前的文件名，加当前的行数。最后是logger.debug()或logger.info()或logger.warn()或logger.error()里的信息。%n表示回车空行。<br /></font>③再加上下面六行则log信息不光显示在屏幕上，而且将被保存在一个叫&quot;log.txt&quot;的文件里，文件最大为100KB。如果文件大小超过100KB，文件会被备份成&quot;log.txt.1&quot;，新的&quot;log.txt&quot;继续记录log信息。<br />接下来我们可以改变log4j.properties，而不需重新编译就可以控制log信息是否显示、log信息的输出端类型、输出方式、输出格式，等等。举例如下：<br />①在log4j.properties文件里把&quot;log4j.rootCategory=DEBUG,stdout,R&quot;改写成&quot;log4j.rootCategory=OFF, stdout,R&quot;，这样所有的log信息都不会显示了；解决了本文开始提出的问题。<br />②在log4j.properties文件里把&quot;log4j.rootCategory=DEBUG,stdout,R&quot;改写成&quot;log4j.rootCategory=INFO, stdout,R&quot;，这样只显示INFO, WARN, ERROR的log信息，而DEBUG信息不会被显示；<br />
<p><font size="2"><font size="2">在web程序中使用log4j注意问题<br /></font><font size="2">1、&nbsp;&nbsp;&nbsp; 由于jsp或servlet在执行状态时没有当前路径概念，所有使用PropertyConfigurator.configure（String）语句找log4j.properties文件时要给出相对于当前jsp或servlet的路径转化成为一个绝对的文件系统路径。方法是使用servletcontext.getrealpath(string)语句。例：<br /></font>//得到当前jsp路径<br />String prefix =&nbsp; getServletContext().getRealPath(&quot;/&quot;);<br />//读取log4j.properties<br />PropertyConfigurator.configure(prefix+&quot;\\WEB-INF\\log4j.properties&quot;);<br />2、相应的log4j.properties设置某个属性时也要在程序中设置绝对路径。例：<br />log4j.appender.R.File属性设置日志文件存放位置。我们可以用读写.properties配置文件的方法进行灵活设置。<br /><br /><font size="2">log4e使用说明<br /></font><font size="2">在了解了log4j的功能后，我们肯定会我们的程序中编写一些Log4j日志记录。对于使用Eclipse的程序员Log4e将是我们最得力的log4j日志编写助手，现在开始Log4e之旅。<br /></font>Log4e是一个免费的Eclipse Plugin，它可帮助你在你的Java工程中快速加入Log； 我们可以在<a href="http://log4e.jayefem.de/index.php/Download">http://log4e.jayefem.de/index.php/Download</a>网站上下载Log4e最新版本。下载后将相应文件夹拷贝到Eclipse的插件目录下，重新Eclipse，在首选项中会多出一个<span>Log4e</span>选项。<br />Log4e可以有多个插入Log为一个方法、类，当然也可以在当前位置插入Log，同时其也可以把Sysout.out.println()的转换为log；所有的这一切只需要你点点鼠标或者按一次快捷键。<font size="2"><br /><br />Log4e的实例参照<a href="http://log4e.jayefem.de/">http://log4e.jayefem.de</a></font></font></p>
//得到当前jsp路径String prefix =&nbsp; getServletContext().getRealPath(&quot;/&quot;);//读取log4j.propertiesPropertyConfigurator.configure(prefix+&quot;\\WEB-INF\\log4j.properties&quot;);2、相应的log4j.properties设置某个属性时也要在程序中设置绝对路径。例：log4j.appender.R.File属性设置日志文件存放位置。我们可以用读写.properties配置文件的方法进行灵活设置。Log4e是一个免费的Eclipse Plugin，它可帮助你在你的Java工程中快速加入Log； 我们可以在网站上下载Log4e最新版本。下载后将相应文件夹拷贝到Eclipse的插件目录下，重新Eclipse，在首选项中会多出一个选项。Log4e可以有多个插入Log为一个方法、类，当然也可以在当前位置插入Log，同时其也可以把Sysout.out.println()的转换为log；所有的这一切只需要你点点鼠标或者按一次快捷键。</font></p>
②③ logger.debug就是输出debug的信息，logger.info就是输出提示信息，logger.warn就是显示警告信息，logger.error就是显示错误信息。下面是配置文件log4j.properties的内容：就是说我要显示所有优先权等於和高于Debug的信息。&quot;stdout&quot;，&rdquo;R&rdquo;表示我定义了两个输出端(随便什么名字都好)。②下面的三行说stdout输出端其实是标准输出Console，也就是屏幕。输出的格式是Pattern③再加上下面六行则log信息不光显示在屏幕上，而且将被保存在一个叫&quot;log.txt&quot;的文件里，文件最大为100KB。如果文件大小超过100KB，文件会被备份成&quot;log.txt.1&quot;，新的&quot;log.txt&quot;继续记录log信息。接下来我们可以改变log4j.properties，而不需重新编译就可以控制log信息是否显示、log信息的输出端类型、输出方式、输出格式，等等。举例如下：①在log4j.properties文件里把&quot;log4j.rootCategory=DEBUG,stdout,R&quot;改写成&quot;log4j.rootCategory=OFF, stdout,R&quot;，这样所有的log信息都不会显示了；解决了本文开始提出的问题。②在log4j.properties文件里把&quot;log4j.rootCategory=DEBUG,stdout,R&quot;改写成&quot;log4j.rootCategory=INFO, stdout,R&quot;，这样只显示INFO, WARN, ERROR的log信息，而DEBUG信息不会被显示；//得到当前jsp路径String prefix =&nbsp; getServletContext().getRealPath(&quot;/&quot;);//读取log4j.propertiesPropertyConfigurator.configure(prefix+&quot;\\WEB-INF\\log4j.properties&quot;);2、相应的log4j.properties设置某个属性时也要在程序中设置绝对路径。例：log4j.appender.R.File属性设置日志文件存放位置。我们可以用读写.properties配置文件的方法进行灵活设置。Log4e是一个免费的Eclipse Plugin，它可帮助你在你的Java工程中快速加入Log； 我们可以在网站上下载Log4e最新版本。下载后将相应文件夹拷贝到Eclipse的插件目录下，重新Eclipse，在首选项中会多出一个选项。Log4e可以有多个插入Log为一个方法、类，当然也可以在当前位置插入Log，同时其也可以把Sysout.out.println()的转换为log；所有的这一切只需要你点点鼠标或者按一次快捷键。<img src ="http://www.blogjava.net/tedeyang/aggbug/18936.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tedeyang/" target="_blank">山颠</a> 2005-11-09 10:41 <a href="http://www.blogjava.net/tedeyang/articles/18936.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>目前流行的日志记录工具配置大全（log4j,Jakarta Commons Logging,jdk1.4 logging）</title><link>http://www.blogjava.net/tedeyang/articles/18935.html</link><dc:creator>山颠</dc:creator><author>山颠</author><pubDate>Wed, 09 Nov 2005 02:39:00 GMT</pubDate><guid>http://www.blogjava.net/tedeyang/articles/18935.html</guid><wfw:comment>http://www.blogjava.net/tedeyang/comments/18935.html</wfw:comment><comments>http://www.blogjava.net/tedeyang/articles/18935.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tedeyang/comments/commentRss/18935.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tedeyang/services/trackbacks/18935.html</trackback:ping><description><![CDATA[<h3>&nbsp;</h3>
<p>&nbsp;</p>
<h2>How to do the initial setup of my logging framework </h2>
<h2>如何设置我的日志框架？</h2>
<p>原文来自于<a href="http://log4e.jayefem.de/index.php/Log4E:FAQ">http://log4e.jayefem.de/index.php/Log4E:FAQ</a></p>
<p>If you are already familiar with your logging framework you might want to skip this section. </p>
<p>This chapter gives you a slight idea of how to make the initial setup of your logger. This is NOT supported by Log4E at the moment and was not the intended use at the beginning of this project.<br /></p>
<p>Log4E does not ship any logging framework which means that you have to download and install it for yourself! </p>
<p>Examples are available for Log4j, Commons Logging, JDK 1.4 Logging (again: you have to do this for yourself). </p>
<p>&nbsp;</p>
<h4><a name="Log4j">Log4j</a></h4>
<ul>1. Download Log4j at <a title="http://logging.apache.org/" href="http://logging.apache.org/" target="_blank">http://logging.apache.org/</a> and copy the log4j.jar to your lib directory.<br /><br />2. Create a new file 'log4j.properties' or 'log4j.xml' (case sensitive) and put it in your classpath. To be more concrete: Put in your source directory, the file will be copied by Eclipse automatically to your build directory.<br /><br />For example:
    <pre>	.../MyEclipseProject/
    .../MyEclipseProject/src/log4j.properties
    .../MyEclipseProject/src/com/mycompany/myapp/...
    </pre>
    <br />2a. Alternatively, you can use the method org.apache.log4j.PropertyConfigurator.configure(&quot;..../log4j.properties&quot;);<br /><br />
    <p>3. Edit the 'log4j.properties' to declare your own categories, log levels and appenders (which means the output like standard out or a log file). <br /><br />log4j.properties example: </p>
    <pre>	#######################################################################
    # Categories and levels
    #######################################################################
    log4j.rootCategory=ERROR, FileApp, ConApp
    log4j.category.de.jayefem=DEBUG
    #######################################################################
    # Appenders
    #######################################################################
    # ConApp is set to be a ConsoleAppender.
    log4j.appender.ConApp=org.apache.log4j.ConsoleAppender
    # ConApp uses PatternLayout.
    log4j.appender.ConApp.layout=org.apache.log4j.PatternLayout
    # Define Pattern
    log4j.appender.ConApp.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
    # FileApp
    log4j.appender.FileApp=org.apache.log4j.RollingFileAppender
    log4j.appender.FileApp.File=D:/proj/Devel/Java/de.jayefem.log4e/log/log4e.log
    log4j.appender.FileApp.MaxFileSize=500KB
    # Keep one backup file
    log4j.appender.FileApp.MaxBackupIndex=1
    log4j.appender.FileApp.layout=org.apache.log4j.PatternLayout
    log4j.appender.FileApp.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
    </pre>
    <p>&quot;de.jayefem&quot;, &quot;ConApp&quot;, &quot;FileApp&quot; and the path to the logfile are selfdefined. All other words are keywords of Log4j.<br /><br />4. That's all. Have fun. <br /></p>
    <p>Note that there are much more possibilities to configure Log4j. Check <a title="http://logging.apache.org/" href="http://logging.apache.org/" target="_blank">http://logging.apache.org/</a> for more. </p>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h4><a name="Jakarta_Commons_Logging">Jakarta Commons Logging</a></h4>
<p>&nbsp;</p>
<p>&nbsp;</p>
<ul>
    <p>Jakarta Commons Logging Framework is a wrapper for all common logging frameworks. If you want to use it, you have to install it AND the underlying logging framework. To install the Commons Logging download it from <a title="http://jakarta.apache.org/commons/logging/" href="http://jakarta.apache.org/commons/logging/" target="_blank">http://jakarta.apache.org/commons/logging/</a> and put the commons-logging.jar in your lib directory.<br />The Commons Logging Frameworks uses Log4j by default. When Log4j isn't found in classpath and JDK 1.4 or higher is being used, the JDK 1.4 logger will be used. If none of the above applies, Commons Logging will fall back to the internal SimpleLog. </p>
    <p>It is also possible to specify the logging framework directly: </p>
    <p>1. Create a new file 'commons-logging.properties' and put it in your classpath. To be more concrete: Put it in your source directory, the file will be copied by Eclipse automatically to your build directory.<br /><br />For example: </p>
    <pre>	.../MyEclipseProject/
    .../MyEclipseProject/src/commons-logging.properties
    .../MyEclipseProject/src/com/mycompany/myapp/...
    </pre>
    2. Edit the 'commons-logging.properties'. <br /><br />commons-logging.properties example:
    <pre>	#
    #org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl
    # SimpleLog
    #org.apache.commons.logging.Log = org.apache.commons.logging.impl.SimpleLog
    # JDK 1.4 logger
    #org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
    # Avalon Toolkit
    #org.apache.commons.logging.Log=org.apache.commons.logging.impl.LogKitLogger
    # Log4j
    org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
    </pre>
    <p>&nbsp;</p>
    <br />As though it is not recommended to use Simplelog because it is not threadsafe, here's an example how to set it up:
    <p>&nbsp;</p>
    <p>1. Create a new file 'simplelog.properties' and put it in your classpath. To be more concrete: Put it in your source directory, the file will be copied by Eclipse automatically to your build directory.<br /><br />For example: </p>
    <pre>	.../MyEclipseProject/
    .../MyEclipseProject/src/simplelog.properties
    .../MyEclipseProject/src/com/mycompany/myapp/...
    </pre>
    2. Edit the 'simplelog.properties' to declare your own categories and log levels. <br /><br />simplelog.properties example:
    <pre>	# Default logging detail level for all instances of SimpleLog. Must be one of
    # (&quot;trace&quot;, &quot;debug&quot;, &quot;info&quot;, &quot;warn&quot;, &quot;error&quot;, or &quot;fatal&quot;). If not specified,
    # defaults to &quot;info&quot;.
    org.apache.commons.logging.simplelog.defaultlog=warn
    # Logging detail level for a SimpleLog instance named &quot;xxxxx&quot;. Must be one of
    # (&quot;trace&quot;, &quot;debug&quot;, &quot;info&quot;, &quot;warn&quot;, &quot;error&quot;, or &quot;fatal&quot;). If not specified, the
    # default logging detail level is used.
    org.apache.commons.logging.simplelog.log.de.jayefem.log4e=debug
    # Set to true if you want the Log instance name to be included in output
    # messages. Defaults to false.
    org.apache.commons.logging.simplelog.showlogname=false
    # Set to true if you want the last componet of the name to be included in
    # output messages. Defaults to true.
    org.apache.commons.logging.simplelog.showShortLogname=true
    # Set to true if you want the current date and time to be included in output
    # messages. Default is false.
    org.apache.commons.logging.simplelog.showdatetime=true
    </pre>
    <p>&nbsp;</p>
    <p>See <a title="http://jakarta.apache.org/commons/logging/" href="http://jakarta.apache.org/commons/logging/" target="_blank">http://jakarta.apache.org/commons/logging/</a> for more. </p>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h4><a name="JDK_1.4_Logging">JDK 1.4 Logging</a></h4>
<p>&nbsp;</p>
<p>&nbsp;</p>
<ul>1. Use JDK 1.4 or higher :-)<br /><br />2. Create a new file 'logging.properties'.<br /><br />3. Invoke your application with:<br />java -Djava.util.logging.config.file=D:\your\path\to\logging.properties com.mycompany.myproject.MyClass<br /><br />
    <p>logging.properties example: </p>
    <pre>	# handlers
    handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler
    # general level
    .level=INFO
    # file handler
    java.util.logging.FileHandler.pattern = %h/java%u.log
    java.util.logging.FileHandler.limit = 50000
    java.util.logging.FileHandler.count = 1
    java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
    # console handler
    java.util.logging.ConsoleHandler.level = FINEST
    java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
    test.de.jayefem.log4e.logkits.JDK1_4_Logging.level = FINEST
    </pre>
    <p>Since I am not an expert of JDK 1.4 logging there might be better ways to configure the logging framework. Suggestions are welcome.<br />See <a title="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/package-summary.html" href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/package-summary.html" target="_blank">http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/package-summary.html</a> for more information. </p>
    <p>&nbsp;</p>
</ul>
<h3>据说apache Jakarta小组曾经强烈建议sun把log4j作为jdk1.4的日志工具，但这条建议没有被采纳。于是他们就开发了common logging 来兼容log4j和jdk的logging，呵呵。简单一点，还是使用log4j吧。</h3>
<h3>note：在eclipse中运行程序时似乎并不会搜索本机的classpath，因此即使把log4j.properties文件放到classpath中也没用。</h3>
<p>最近发现Weblogic也是用的log4j，呵呵。</p><img src ="http://www.blogjava.net/tedeyang/aggbug/18935.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tedeyang/" target="_blank">山颠</a> 2005-11-09 10:39 <a href="http://www.blogjava.net/tedeyang/articles/18935.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>