﻿<?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-Shooper.Java-文章分类-Java Tools</title><link>http://www.blogjava.net/shooper/category/10944.html</link><description>Beginning Java</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 03:57:04 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 03:57:04 GMT</pubDate><ttl>60</ttl><item><title>[Log4j] 配置Log4j </title><link>http://www.blogjava.net/shooper/articles/56599.html</link><dc:creator>Shooper.Java</dc:creator><author>Shooper.Java</author><pubDate>Tue, 04 Jul 2006 14:10:00 GMT</pubDate><guid>http://www.blogjava.net/shooper/articles/56599.html</guid><wfw:comment>http://www.blogjava.net/shooper/comments/56599.html</wfw:comment><comments>http://www.blogjava.net/shooper/articles/56599.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/shooper/comments/commentRss/56599.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/shooper/services/trackbacks/56599.html</trackback:ping><description><![CDATA[
		<h2>
				<a id="viewpost1_TitleUrl" href="/zJun/archive/2006/06/28/55511.html">[Log4j] 配置Log4j</a>
		</h2>
		<div class="postText">
				<p>
						<font face="Arial" size="2">Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的，它可接key=value格式的设置或xml格式的设置信息。通过配置，可以创建出Log4J的运行环境。<br /><br /><strong>1. 配置文件</strong><br />Log4J配置文件的基本格式如下： </font>
				</p>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
						<font face="Arial" size="2">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</font>
						<font face="Arial">
								<font size="2">
										<span style="COLOR: #000000">#配置根Logger<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.rootLogger </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> </span>
										<span style="FONT-WEIGHT: bold; COLOR: #800000">[</span>
										<span style="COLOR: #800000">level</span>
										<span style="FONT-WEIGHT: bold; COLOR: #800000">]</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #000000">,</span>
										<span style="COLOR: #000000"> appenderName1</span>
										<span style="COLOR: #000000">,</span>
										<span style="COLOR: #000000"> appenderName2</span>
										<span style="COLOR: #000000">,</span>
								</font>
						</font>
						<font face="Arial">
								<font size="2">
										<span style="COLOR: #000000"> …<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#配置日志信息输出目的地Appender<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.appenderName </span>
										<span style="COLOR: #000000">=</span>
								</font>
						</font>
						<font face="Arial">
								<font size="2">
										<span style="COLOR: #000000"> fully.qualified.name.of.appender.class <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　log4j.appender.appenderName.option1 </span>
										<span style="COLOR: #000000">=</span>
								</font>
						</font>
						<font face="Arial">
								<font size="2">
										<span style="COLOR: #000000"> value1 <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　… <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　log4j.appender.appenderName.optionN </span>
										<span style="COLOR: #000000">=</span>
								</font>
						</font>
						<font face="Arial">
								<font size="2">
										<span style="COLOR: #000000"> valueN <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#配置日志信息的格式（布局）<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.appenderName.layout </span>
										<span style="COLOR: #000000">=</span>
								</font>
						</font>
						<font face="Arial">
								<font size="2">
										<span style="COLOR: #000000"> fully.qualified.name.of.layout.class <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　log4j.appender.appenderName.layout.option1 </span>
										<span style="COLOR: #000000">=</span>
								</font>
						</font>
						<font face="Arial">
								<font size="2">
										<span style="COLOR: #000000"> value1 <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　… <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　log4j.appender.appenderName.layout.optionN </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> valueN </span>
								</font>
						</font>
				</div>
				<br />
				<font face="Arial" size="2">其中 <strong>[level] </strong>是日志输出级别，共有5级：<br /></font>
				<span style="COLOR: #000000">
						<strong>
								<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
										<font face="Arial" size="2">
												<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
												<span style="COLOR: #000000">FATAL     </span>
												<span style="COLOR: #000000">0</span>
										</font>
										<font face="Arial">
												<font size="2">
														<span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />ERROR     </span>
														<span style="COLOR: #000000">3</span>
												</font>
										</font>
										<font face="Arial">
												<font size="2">
														<span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />WARN      </span>
														<span style="COLOR: #000000">4</span>
												</font>
										</font>
										<font face="Arial">
												<font size="2">
														<span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />INFO      </span>
														<span style="COLOR: #000000">6</span>
												</font>
										</font>
										<font face="Arial">
												<font size="2">
														<span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />DEBUG     </span>
														<span style="COLOR: #000000">7</span>
												</font>
										</font>
										<span style="COLOR: #000000">
												<br />
												<font face="Arial" size="2">
														<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
												</font>
										</span>
								</div>
								<br />
								<font face="Arial" size="2">Appender </font>
						</strong>
						<font face="Arial" size="2">为日志输出目的地，Log4j提供的appender有以下几种：<br /></font>
						<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
								<font face="Arial" size="2">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								</font>
								<span style="COLOR: #000000">
										<font face="Arial" size="2">org.apache.log4j.ConsoleAppender（控制台），<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />org.apache.log4j.FileAppender（文件），<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />org.apache.log4j.DailyRollingFileAppender（每天产生一个日志文件），<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />org.apache.log4j.RollingFileAppender（文件大小到达指定尺寸的时候产生一个新的文件），<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />org.apache.log4j.WriterAppender（将日志信息以流格式发送到任意指定的地方） </font>
								</span>
						</div>
				</span>
				<br />
				<font face="Arial">
						<font size="2">
								<strong>Layout</strong>：日志输出格式，Log4j提供的layout有以下几种：<br /></font>
				</font>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
						<font face="Arial" size="2">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</font>
						<span style="COLOR: #000000">
								<font face="Arial" size="2">org.apache.log4j.HTMLLayout（以HTML表格形式布局），<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />org.apache.log4j.PatternLayout（可以灵活地指定布局模式），<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />org.apache.log4j.SimpleLayout（包含日志信息的级别和信息字符串），<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />org.apache.log4j.TTCCLayout（包含日志产生的时间、线程、类别等等信息） </font>
						</span>
				</div>
				<br />
				<font face="Arial">
						<font size="2">
								<strong>打印参数: </strong>Log4J采用类似C语言中的printf函数的打印格式格式化日志信息，如下:<br /></font>
				</font>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
						<font face="Arial" size="2">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</font>
						<font face="Arial">
								<font size="2">
										<span style="COLOR: #000000">　　<strong>%m</strong>   输出代码中指定的消息<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　<strong>%p</strong>   输出优先级，即DEBUG，INFO，WARN，ERROR，FATAL <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　<strong>%r</strong>   输出自应用启动到输出该log信息耗费的毫秒数 <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　<strong>%c</strong>   输出所属的类目，通常就是所在类的全名 <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　<strong>%t</strong>   输出产生该日志事件的线程名 <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　<strong>%n </strong>  输出一个回车换行符，Windows平台为“\r\n”，Unix平台为“\n” <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　<strong>%d</strong>   输出日志时间点的日期或时间，默认格式为ISO8601，也可以在其后指定格式，比如：%d{yyy MMM dd HH:mm:ss</span>
										<span style="COLOR: #000000">,</span>
										<span style="COLOR: #000000">SSS}，输出类似：2002年10月18日 </span>
										<span style="COLOR: #000000">22</span>
										<span style="COLOR: #000000">：</span>
										<span style="COLOR: #000000">10</span>
										<span style="COLOR: #000000">：</span>
										<span style="COLOR: #000000">28</span>
										<span style="COLOR: #000000">，</span>
										<span style="COLOR: #000000">921</span>
								</font>
						</font>
						<font face="Arial">
								<font size="2">
										<span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　<strong>%l </strong>  输出日志事件的发生位置，包括类目名、发生的线程，以及在代码中的行数。举例：Testlog4.main(TestLog4.java:</span>
										<span style="COLOR: #000000">10</span>
										<span style="COLOR: #000000">) <img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
								</font>
						</font>
				</div>
				<br />
				<font face="Arial">
						<font size="2">
								<strong>2. 在代码中初始化Logger:</strong>
								<br />1）在程序中调用<strong>BasicConfigurator.configure()</strong>方法：给根记录器增加一个ConsoleAppender，输出格式通过PatternLayout设为<strong>"%-4r [%t] %-5p %c %x - %m%n"</strong>，还有根记录器的默认级别是<strong>Level.DEBUG</strong>. <br />2）配置放在文件里，通过命令行参数传递文件名字，通过<strong>PropertyConfigurator.configure(args[x])</strong>解析并配置；<br />3）配置放在文件里，通过环境变量传递文件名等信息，利用log4j默认的初始化过程解析并配置；<br />4）配置放在文件里，通过应用服务器配置传递文件名等信息，利用一个特殊的servlet来完成配置。<br /><br /><strong>3. 为不同的 Appender 设置日志输出级别：</strong><br />当调试系统时，我们往往注意的只是异常级别的日志输出，但是通常所有级别的输出都是放在一个文件里的，如果日志输出的级别是BUG！？那就慢慢去找吧。<br />这时我们也许会想要是能把异常信息单独输出到一个文件里该多好啊。当然可以，Log4j已经提供了这样的功能，我们只需要在配置中修改<strong>Appender</strong>的<font color="#990000"><strong>Threshold</strong></font></font>
				</font>
				<font color="#000000">
						<font face="Arial" size="2">就能实现,比如下面的例子：<br /><br /><strong>[配置文件]</strong><br /></font>
						<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
								<font face="Arial" size="2">
										<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								</font>
								<font face="Arial">
										<font size="2">
												<span style="COLOR: #000000">### set log levels ###<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.rootLogger</span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000">debug</span>
												<span style="COLOR: #000000">,</span>
												<span style="COLOR: #000000"> stdout</span>
												<span style="COLOR: #000000">,</span>
												<span style="COLOR: #000000"> D</span>
												<span style="COLOR: #000000">,</span>
										</font>
								</font>
								<font face="Arial">
										<font size="2">
												<span style="COLOR: #000000"> E<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />### 输出到控制台 ###<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.stdout</span>
												<span style="COLOR: #000000">=</span>
										</font>
								</font>
								<font face="Arial">
										<font size="2">
												<span style="COLOR: #000000">org.apache.log4j.ConsoleAppender<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.stdout.Target</span>
												<span style="COLOR: #000000">=</span>
										</font>
								</font>
								<font face="Arial">
										<font size="2">
												<span style="COLOR: #000000">System.out<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.stdout.layout</span>
												<span style="COLOR: #000000">=</span>
										</font>
								</font>
								<font face="Arial">
										<font size="2">
												<span style="COLOR: #000000">org.apache.log4j.PatternLayout<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.stdout.layout.ConversionPattern</span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000"> %d{ABSOLUTE} %5p %c{</span>
												<span style="COLOR: #000000">1</span>
										</font>
								</font>
								<font face="Arial">
										<font size="2">
												<span style="COLOR: #000000">}:%L - %m%n<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />### 输出到日志文件 ###<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.D</span>
												<span style="COLOR: #000000">=</span>
										</font>
								</font>
								<font face="Arial">
										<font size="2">
												<span style="COLOR: #000000">org.apache.log4j.DailyRollingFileAppender<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.D.File</span>
												<span style="COLOR: #000000">=</span>
										</font>
								</font>
								<font face="Arial">
										<font size="2">
												<span style="COLOR: #000000">logs/log.log<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.D.Append</span>
												<span style="COLOR: #000000">=</span>
										</font>
								</font>
								<font face="Arial">
										<font size="2">
												<span style="COLOR: #000000">true<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.D.<strong><font color="#990000">Threshold</font></strong></span>
												<span style="COLOR: #000000">=</span>
										</font>
								</font>
								<font face="Arial">
										<font size="2">
												<span style="COLOR: #000000">DEBUG <strong>## 输出DEBUG级别以上的日志</strong><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.D.layout</span>
												<span style="COLOR: #000000">=</span>
										</font>
								</font>
								<font face="Arial">
										<font size="2">
												<span style="COLOR: #000000">org.apache.log4j.PatternLayout<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.D.layout.ConversionPattern</span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000">%-d{yyyy-MM-dd HH:mm:ss} </span>
												<span style="FONT-WEIGHT: bold; COLOR: #800000">[</span>
												<span style="COLOR: #800000">%t:%r</span>
												<span style="FONT-WEIGHT: bold; COLOR: #800000">]</span>
												<span style="COLOR: #000000">-</span>
												<span style="FONT-WEIGHT: bold; COLOR: #800000">[</span>
												<span style="COLOR: #800000">%p</span>
												<span style="FONT-WEIGHT: bold; COLOR: #800000">]</span>
										</font>
								</font>
								<font face="Arial">
										<font size="2">
												<span style="COLOR: #000000"> %m%n<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />### 保存异常信息到单独文件 ###<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.D</span>
												<span style="COLOR: #000000">=</span>
										</font>
								</font>
								<font face="Arial">
										<font size="2">
												<span style="COLOR: #000000">org.apache.log4j.DailyRollingFileAppender<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.D.File</span>
												<span style="COLOR: #000000">=</span>
										</font>
								</font>
								<font face="Arial">
										<font size="2">
												<span style="COLOR: #000000">logs/error.log ## 异常日志文件名<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.D.Append</span>
												<span style="COLOR: #000000">=</span>
										</font>
								</font>
								<font face="Arial">
										<font size="2">
												<span style="COLOR: #000000">true<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.D.<strong><font color="#990000">Threshold</font></strong></span>
												<span style="COLOR: #000000">=</span>
										</font>
								</font>
								<font face="Arial">
										<font size="2">
												<span style="COLOR: #000000">ERROR<strong> ## 只输出ERROR级别以上的日志!!!<br /></strong><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.D.layout</span>
												<span style="COLOR: #000000">=</span>
										</font>
								</font>
								<font face="Arial">
										<font size="2">
												<span style="COLOR: #000000">org.apache.log4j.PatternLayout<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.D.layout.ConversionPattern</span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000">%-d{yyyy-MM-dd HH:mm:ss} </span>
												<span style="FONT-WEIGHT: bold; COLOR: #800000">[</span>
												<span style="COLOR: #800000">%t:%r</span>
												<span style="FONT-WEIGHT: bold; COLOR: #800000">]</span>
												<span style="COLOR: #000000">-</span>
												<span style="FONT-WEIGHT: bold; COLOR: #800000">[</span>
												<span style="COLOR: #800000">%p</span>
												<span style="FONT-WEIGHT: bold; COLOR: #800000">]</span>
												<span style="COLOR: #000000"> %m%n</span>
										</font>
								</font>
						</div>
				</font>
				<br />
				<font face="Arial">
						<font size="2">
								<strong>[代码中使用]</strong>
								<br />
						</font>
				</font>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
						<font face="Arial">
								<font size="2">
										<img id="Codehighlighter1_23_240_Open_Image" onclick="this.style.display='none'; Codehighlighter1_23_240_Open_Text.style.display='none'; Codehighlighter1_23_240_Closed_Image.style.display='inline'; Codehighlighter1_23_240_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
										<img id="Codehighlighter1_23_240_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_23_240_Closed_Text.style.display='none'; Codehighlighter1_23_240_Open_Image.style.display='inline'; Codehighlighter1_23_240_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
										<span style="COLOR: #0000ff">public</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">class</span>
										<span style="COLOR: #000000"> TestLog4j </span>
										<span id="Codehighlighter1_23_240_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
												<img src="http://www.blogjava.net/images/dot.gif" />
										</span>
								</font>
						</font>
						<span id="Codehighlighter1_23_240_Open_Text">
								<font face="Arial">
										<font size="2">
												<span style="COLOR: #000000">{<br /><img id="Codehighlighter1_65_238_Open_Image" onclick="this.style.display='none'; Codehighlighter1_65_238_Open_Text.style.display='none'; Codehighlighter1_65_238_Closed_Image.style.display='inline'; Codehighlighter1_65_238_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_65_238_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_65_238_Closed_Text.style.display='none'; Codehighlighter1_65_238_Open_Image.style.display='inline'; Codehighlighter1_65_238_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
												<span style="COLOR: #0000ff">public</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #0000ff">static</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #0000ff">void</span>
												<span style="COLOR: #000000"> main(String[] args) </span>
												<span id="Codehighlighter1_65_238_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
														<img src="http://www.blogjava.net/images/dot.gif" />
												</span>
										</font>
								</font>
								<span id="Codehighlighter1_65_238_Open_Text">
										<font face="Arial">
												<font size="2">
														<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        PropertyConfigurator.configure(</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">D:/Code/conf/log4j.properties</span>
														<span style="COLOR: #000000">"</span>
												</font>
										</font>
										<font face="Arial">
												<font size="2">
														<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        Logger logger </span>
														<span style="COLOR: #000000">=</span>
														<span style="COLOR: #000000"> Logger.getLogger(TestLog4j.</span>
														<span style="COLOR: #0000ff">class</span>
												</font>
										</font>
										<font face="Arial">
												<font size="2">
														<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        logger.debug(</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">debug</span>
														<span style="COLOR: #000000">"</span>
												</font>
										</font>
										<font face="Arial">
												<font size="2">
														<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        logger.error(</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">error</span>
														<span style="COLOR: #000000">"</span>
												</font>
										</font>
										<span style="COLOR: #000000">
												<font face="Arial" size="2">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</font>
										</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<font face="Arial" size="2">
												<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</font>
								</span>
						</span>
				</div>
				<br />
				<font face="Arial" size="2">运行一下，看看异常信息是不是保存在了一个单独的文件error.log中。</font>
		</div>
<img src ="http://www.blogjava.net/shooper/aggbug/56599.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/shooper/" target="_blank">Shooper.Java</a> 2006-07-04 22:10 <a href="http://www.blogjava.net/shooper/articles/56599.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2005 Java 综述&amp;2006 Java 展望</title><link>http://www.blogjava.net/shooper/articles/45320.html</link><dc:creator>Shooper.Java</dc:creator><author>Shooper.Java</author><pubDate>Tue, 09 May 2006 16:29:00 GMT</pubDate><guid>http://www.blogjava.net/shooper/articles/45320.html</guid><wfw:comment>http://www.blogjava.net/shooper/comments/45320.html</wfw:comment><comments>http://www.blogjava.net/shooper/articles/45320.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/shooper/comments/commentRss/45320.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/shooper/services/trackbacks/45320.html</trackback:ping><description><![CDATA[
		<div class="clear">
		</div>
		<div class="item-body">
				<div class="item-content">
						<p align="center">作者:matrix 来自:Matrix </p>
						<p align="left">2005 就要过去了。<br /><br />过去的一年，Mustang 没能出来，EJB3刚刚才提交最终草案，Ajax兴起但是五花八门不知道应该用谁，Aspectj 5出来了，但是缺乏惊喜。<br /><br />或许我们会说，过去的2005，Java界缺乏成绩，但是却毫无疑问，Java遥遥领先于其他语言。从<a href="http://www.matrix.org.cn/resource/news/315.html" target="_new"><span style="COLOR: green"><u>11月的语言排行榜Java遥遥领先</u></span></a>，到今年的Java图书销售统计上，Java图书销售总数是C#的2倍，PHP的2.5倍，Perl的4倍，Ruby/Python的9倍. <br /><br />这足以让我们对2006充满想象。<br /><br />不过，还是让我们先回顾下2005吧....<br /><br /><span style="COLOR: red">1。2005 之 Java 对手</span><br /><br />      过去的2005，Java无疑是最受欢迎的语言。但是Java也面临其他语言的挑战，其中Bruce A. Tate，在一文中，提出了<a href="http://www.matrix.org.cn/resource/article/44/44016_Challenge_Java.html" target="_new"><span style="COLOR: green"><u>有可能挑战Java开发的4种技术</u></span></a>，包括动态语言，Continuation，Conventions，元编程等。<br /><br />      Ruby可以说是最有可能挑战Java的语言，刚刚发布的<a href="http://www.matrix.org.cn/resource/news/364_Ruby+on+Rails.html" target="_new"><span style="COLOR: green"><u>Rails1.0引起了Fans的疯狂</u></span></a>。Rails会不会是下一代伟大的框架？有可能。要做一个选择的话，Rails应该会是在使用Ruby或是其他动态编程语言的元编程框架潮流中的第一个。但是Java已经开始引进Ruby的特性了，比如Trails，Groovy。<br /><br /><span style="COLOR: red">2。2005 之 Java 新玩意</span><br /><br />·<b>Drools</b>：Drools 是一个基于Charles Forgy's的Rete算法的，专为Java语言所设计的规则引擎。Rete算法应用于面向对象的接口将使基于商业对象的商业规则的表达更为自然。Drools是用Java写的，但能同时运行在Java和.Net上。Drools提供了声明式程序设计(Declarative Programming),并且使用域描述语言(Domain Specific Languages (DSL))。Web和持久层框架我们已经有很多选择了，但是处在中间层的商务逻辑有好的框架吗？你希望每次经理给你一个新的命令就不得不重编译那些复杂的if ... then 意大利面条代码吗？<a href="http://www.matrix.org.cn/resource/article/44/44046_Drools+Framework+Business.html" target="_new"><span style="COLOR: green"><u>Drools- 商务逻辑框架的选择</u></span></a>这篇文章中，保罗布朗推荐的Drools的规则引擎或许是完成这类任务的最好选择;<a href="http://www.matrix.org.cn/resource/article/43/43840_SPRING_Rule_Engine.html" target="_new"><span style="COLOR: green"><u>为你的基于SPRING的应用增加简单规则引擎</u></span></a>描述如何为流行的Spring框架开发简单的规则引擎；<a href="http://www.matrix.org.cn/resource/article/43/43782_Drools.html" target="_new"><span style="COLOR: green"><u>在你的企业级java应用中使用Drools</u></span></a>一文则向你展示如何在企业级Java应用中使用Drools.<br /><br />·<b>Portlet</b>：“Portlets是一种Web组件－就像servlets－是专为将合成页面里的内容聚集在一起而设计的。通常请求一个portal页面会引发多个portlets被调用。每个portlet都会生成标记段，并与别的portlets生成的标记段组合在一起嵌入到portal页面的标记内。”（摘自Portlet规范，JSR 168）。2005，Portlet框架层出不穷。<a href="http://www.matrix.org.cn/resource/article/44/44029_Portlet.html" target="_new"><span style="COLOR: green"><u>什么是Portlet ?</u></span></a>让你的Portlet之旅从这里开始。<br /><br /><br />·<b>Ajax</b>：2005年，还有什么比Ajax更火呢？<a href="http://www.matrix.org.cn/resource/news/301_Ajax.html" target="_new"><span style="COLOR: green"><u>Ajax兴起, 传统Web框架将走向何方？</u></span></a> 引起广泛讨论，一度让人感受到了Ajax的凶猛之势。虽然Ajax和Java没有直接关系，但是毫无疑问Ajax也是Java界关心的东西。<a href="http://www.matrix.org.cn/resource/article/43/43904_Ajax.html" target="_new"><span style="COLOR: green"><u>Ajax: Web应用的新方法</u></span></a>介绍了这个将令人们兴奋的技术。<br />    <br />Ajax的应用也层出不穷，比如Google就成功地使用了Ajax。<a href="http://www.matrix.org.cn/resource/article/43/43972_AJAX.html" target="_new"><span style="COLOR: green"><u>用AJAX来控制书签和回退按钮</u></span></a>告诉我们如何用AJAX来控制书签和回退按钮。<br /><br />一系列框架也随之而出来，比如DWR, Ajaxanywhere，Ajaxtags。其中：<a href="http://www.matrix.org.cn/resource/article/43/43926_DWR_AJAX.html" target="_new"><span style="COLOR: green"><u>DWR让AJAX如此简单</u></span></a>展示DWR如何使得AJAX的应用既简单又快捷。<a href="http://www.matrix.org.cn/resource/article/1/1691_Ajax.html" target="_new"><span style="COLOR: green"><u>初探AjaxTags</u></span></a>展示如何使用Ajaxtags进行Ajax开发。<br /><br />·<b>SOA</b>：当然，2005不仅是框架，2005还有SOA，BEA, IBM, ORACLE..... 一家又一家企业公布了他们的SOA方案, 宣称他们的产品支持SOA功能. SCA和SDO也将组成新的SOA编程模型。<a href="http://www.matrix.org.cn/resource/article/44/44029_Portlet.html" target="_new"><span style="COLOR: green"><u>SCA和SDO将组成新的SOA编程模型</u></span></a>说明了如何在实现了J2EE1.4规范的应用服务器之间，比如Oracle Application Server 10g，使用J2EE1.4建立可互操作的，轻便灵活的服务；<a href="http://www.matrix.org.cn/resource/article/43/43929_SOA_Event_driven.html" target="_new"><span style="COLOR: green"><u>SOA架构中的事件驱动服务</u></span></a>讨论使用Mule实现一个高效的事件驱动和面向服务的平台； 面对SOA, 你准备好了吗?<br /><br />·<b>RPC</b>：Web应用的RPC方式调用，随着Web2.0的兴起，RPC方式逐渐成为Web调用的一种方式。<br /><br />·<b>分布式组件开发</b>：在一个分布式应用当中，提供一个统一对外接口，通过可重用的外部API来满足需求。<a href="http://www.matrix.org.cn/resource/article/43/43899_Java_Component_Developmen.html" target="_new"><span style="COLOR: green"><u>Java组件开发:一个概念框架</u></span></a>提出了一个构建概念框架地解决方案.<br /><br /><br /><span style="COLOR: red">3。Hibernate继续前进</span><br /><br />    Hibernate仍然是最受欢迎的企业级开发持久层方案，Ejb 3.0 的出现是否会让Hibernate的发展有什么变化吗？ 这无疑是让大家都感兴趣的事情。过去的一年，关于Hibernate也有很多有趣的东西：<a href="http://www.matrix.org.cn/resource/article/43/43813_Hibernate_Formulas.html" target="_new"><span style="COLOR: green"><u>Hibernate 3 的Formulas</u></span></a>展现formula的各种特征是如何辅助模式转换的；而<a href="http://www.matrix.org.cn/resource/news/381_Hibernate.html" target="_new"><span style="COLOR: green"><u>Magicgod的Hibernate的思考</u></span></a>则提出了提到了Hibernate的一些弱点；<a href="http://www.matrix.org.cn/resource/article/44/44029_Portlet.html" target="_new"><span style="COLOR: green"><u></u></span></a>。<br /><br /><span style="COLOR: red">4。Spring大热</span><br /><br />     没有什么文章，比<a href="http://www.matrix.org.cn/resource/article/43/43718_Spring_EJB.html" target="_new"><span style="COLOR: green"><u>POJO应用框架：Spring与EJB3.0的比较</u></span></a> 夺得更多的人的眼球了。Spring框架虽然很流行但并不是一个标准的开源框架，EJB3.0是由Java Community Process (JCP)制订的标准框架，为所有主要的J2EE厂商支持。两者都大量地使用了依赖注入。<a href="http://www.matrix.org.cn/resource/article/44/44054_Transaction+Spring.html" target="_new"><span style="COLOR: green"><u>在SPRING中实现事务暂停</u></span></a>讨论了Spring的事务管理特性。<a href="http://www.matrix.org.cn/resource/article/43/43708_Spring_Hibernate.html" target="_new"><span style="COLOR: green"><u>在Spring中配置Hibernate事务</u></span></a>探讨了怎么用Spring来装配组件及其事务管理。<a href="http://www.matrix.org.cn/resource/article/43/43666_Spring.html" target="_new"><span style="COLOR: green"><u>爱上Spring的5个理由</u></span></a>里作者描述了他为何喜欢上了Spring；而<a href="http://www.matrix.org.cn/resource/article/43/43814_EJB3_POJO.html" target="_new"><span style="COLOR: green"><u>使用EJB 3.0简化企业级Java开发</u></span></a>阐述了如何使用EJB 3.0 注释来开发藕合松散的POJO应用及容器服务器如何管理POJO。<br /><br />    2006，看来还有一场大战。 <br /><br /><span style="COLOR: red">5。在Eclipse的影子下</span><br /><br />     调查表示，超过70%的开发者使用Eclipse进行开发。Eclipse毫无疑问已经占据了IDE的主流市场。Eclipse的兴起，也间接引起了Borland的离去。但是也引起了IDE工具的竞争加剧，对开发者是件不折不扣的好事。<a href="http://www.matrix.org.cn/resource/article/43/43844_Eclipse_Hot_Key.html" target="_new"><span style="COLOR: green"><u>成为Eclipse热键高手</u></span></a>提到了那些会让你的手指动的飞快的热键组合。这只是Eclipse快捷方便的一个缩影。刚发布的WTP,   好用的Myeclipse，都推动着Eclipse的不断发展，或许这就是社区的力量。<br /><br /><span style="COLOR: red">6。ANT？</span><br /><br />      ANT仍然很受欢迎。ANT不仅仅是一个Build工具，它还可以作更多的事情。<a href="http://www.matrix.org.cn/resource/article/43/43596_Ant_web.html" target="_new"><span style="COLOR: green"><u>使用Ant进行Web开发</u></span></a>介绍WEB 应用程序的部署，包括get, serverdeploy, 和 scp等。<a href="http://www.matrix.org.cn/resource/article/44/44061_Project+Automation.html" target="_new"><span style="COLOR: green"><u>使项目开发自动化</u></span></a>描绘了用Ant自动化你的项目能带来的好处。<br /><br /><span style="COLOR: red">7。2006的Java期待？</span><br /><br />·EJB3: EJB3最终草案提交，预示着EJB3的即将到来了，相信明年一定程度上是EJB3年，简化开发是否真的实至名归？<br />·Mustang: 不知道Mustang 的出现，会给Java性能带来多大的改变，寄存器优化不知道是不是能带来革命的效果？<br />·JBI-ESB：JBI这个提了很多年的名词，终于在今年大热，相信明年JBI仍然会继续发展。<br />·JSF：JSF有太多对手了，Struts，Spring mvc，特别是Webwork加入Struts之后，不过相信JSF也是值得我们期待<br />·AJAX：虽然有很多AJAX框架出来，但是killer级别的框架是谁呢？2006会揭晓吗？<br />·Groovy：社区的力量使得Groovy越来越成熟和完善了。<br />·Rails：Ruby虽然和Java无关，但是我想多数人都在关心Rails。毕竟Rails还是我们所期待的东西。<br />·Spring2.0：Spring 2.0明年初就会发布了，相信会继续带动Spring社区的狂热。<br /><br />相信在所有技术语言中，Java是2006年的热点所在，让我们共同期待2006。<br /><br />2006, A Happy New Java-year and Matrix-year!  </p>
				</div>
		</div>
<img src ="http://www.blogjava.net/shooper/aggbug/45320.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/shooper/" target="_blank">Shooper.Java</a> 2006-05-10 00:29 <a href="http://www.blogjava.net/shooper/articles/45320.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jakarta-ant的使用(java编译工具)</title><link>http://www.blogjava.net/shooper/articles/45317.html</link><dc:creator>Shooper.Java</dc:creator><author>Shooper.Java</author><pubDate>Tue, 09 May 2006 16:13:00 GMT</pubDate><guid>http://www.blogjava.net/shooper/articles/45317.html</guid><wfw:comment>http://www.blogjava.net/shooper/comments/45317.html</wfw:comment><comments>http://www.blogjava.net/shooper/articles/45317.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/shooper/comments/commentRss/45317.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/shooper/services/trackbacks/45317.html</trackback:ping><description><![CDATA[
		<p>
				<strong>一：介绍：</strong>
				<br />ant 是jakarta的一个编译工具，如果你了解linux/Unix下的makefile你就很容易 <br />理解ant的用途了。ant最适合你使用UltraEdit(EditPlus)写java程序，然后你使用ant去编译，同时javadoc ,生成一个jar,war，实现文件的copy都可以在build.xml通过不同的tager去实现，还是很方便的一个东东强烈推荐是使用。<br /><br /><strong>二：下载</strong><br />你可以从下面的地址下载到ant,目前版本：1.41 <br /><a href="http://jakarta.apache.org/builds/jakarta-ant/release/v1.4.1/bin/">http://jakarta.apache.org/builds/jakarta-ant/release/v1.4.1/bin/</a></p>
		<p>
				<strong>三：安装</strong>
				<br />a:)Windows <br />1:解压你下载的文件，会有一个jakarta-ant(版本号的)目录产生，把他改名为ant <br />2:copy ant 目录到你需要的位置。 <br />3:在环境变量中添加：ANT_HOME=ant的安装目录，path中加$ANT_HOME$\\u0008in;注意你同时必须已经安装了jdk,并添加了JAVA_HOME的环境变量，同时早path中加了$JAVA_HOME$\\u0008in; </p>
		<p>b:)Linux/Unix <br />1:解压你下载的文件，会有一个jakarta-ant(版本号的)目录产生，把他改名为ant <br />2:copy ant 目录到你需要的位置。 <br />3:在环境变量中添加：ANT_HOME=ant的安装目录，path中加$ANT_HOME$\\u0008in;注意你同时必须已经安装了jdk,并添加了JAVA_HOME的环境变量，同时早path中加了$JAVA_HOME$\\u0008in;实现修改环境变量你需要修改.bash_profile文件。 <br />如下 <br />ANT_HOME=/usr/local/ant <br />JAVA_HOME=/usr/local/jdk <br />PATH=$PATH:$HOME/bin:/usr/local/ant/bin:/usr/local/jdk/bin </p>
		<p>export PATH ANT_HOME JAVA_HOME </p>
		<p>四:编写build.xml <br />build.xml相当Linux下的makefile,具体的实现都在build.xml中实现。 <br />我给给例子说明一下。 <br />build.xml <br />================================================================ <br />&lt;project name="bingo" default="build" basedir="../.." &gt; <br /><font color="#ff0000">&lt;!--basedir设定工作目录--&gt; <br /><br /></font>&lt;property name="version" value="1.0"/&gt; </p>
		<p>
				<font color="#ff0000">&lt;!-- The base directory relative to which most targets are built --&gt; <br /></font>&lt;property name="base" value="."/&gt; </p>
		<p>
				<font color="#ff0000">&lt;!-- The directory where source files are stored. --&gt; <br /></font>&lt;property name="java.source.dir" value="bingo/src"/&gt; <br /><font color="#ff0000">&lt;!--代码保存路径--&gt;<br /><br />&lt;!-- Destination for compiled files --&gt; <br /></font>&lt;property name="javac.dest" value="bingo/classes"/&gt; <br /><font color="#ff0000">&lt;!--class保存路径--&gt; <br /><br />&lt;!-- Destination for generated jar files --&gt; <br /></font>&lt;property name="jar.dest" value="bingo/jar"/&gt; <br /><font color="#ff0000">&lt;!--jar文件保存路径--&gt; <br /></font><font color="#ff0000"><br />&lt;!-- Destination for documentation files generated or not --&gt; <br /></font>&lt;property name="docs" value="bingo/docs"/&gt; <br /><font color="#ff0000">&lt;!--javadoc文件保存路径--&gt; <br /><br />&lt;!-- Destination for javadoc generated files --&gt; <br /></font>&lt;property name="javadoc.dest" value="bingo/docs"/&gt; </p>
		<p>
				<font color="#ff0000">&lt;!-- The stem where most log4j source code is located. --&gt;</font>
				<br />&lt;property name="stem" value="com/bingo"/&gt; </p>
		<p>&lt;property name="base-files" value="include"/&gt; </p>
		<p>
				<font color="#ff0000">&lt;!-- Original manifest.mf file before filtering. --&gt; <br /></font>&lt;property name="manifest.src" value="bingo/build/manifest.mf"/&gt; </p>
		<p>
				<font color="#ff0000">&lt;!-- Some targets needs a more precise stem. --&gt; <br /></font>&lt;property name="BSTEM" value="${java.source.dir}/${stem}"/&gt; </p>
		<p>&lt;property name="tomcat.dir" value="c:/Apache/Tomcat"/&gt; </p>
		<p>&lt;property name="webapp.dir" value="${tomcat.dir}/webapps/ROOT/WEB-INF/classes"/&gt; </p>
		<p>
				<font color="#ff0000">&lt;!--List all Package used in this project --&gt; <br /></font>&lt;property name="PackageList" value=" <br />com.bingo, <br />com.bingo.database, <br />com.bingo.dbocw, <br />com.bingo.util, <br />com.bingo.taglibs.jndi, <br />com.bingo.finance.database, <br />com.bingo.finance.entity, <br />com.bingo.finance.manager" /&gt; <br /><font color="#ff0000">&lt;!--你的project中所有的包--&gt; <br /></font><br /><font color="#ff0000">&lt;!-- List all jar or file used in this project --&gt; <br /></font>&lt;property name="classpath" value="${classpath}; <br />${base-files}/tomcat/servlet.jar; <br />${base-files}/tomcat/webserver.jar; <br />${base-files}/log4j/log4j.jar; <br />${base-files}/log4j/log4j-core.jar" /&gt; <br /><font color="#ff0000">&lt;!--你需要用到的包--&gt; <br /></font><br />&lt;target name="init"&gt; <br />&lt;tstamp /&gt; <br />&lt;/target&gt; </p>
		<p>&lt;target name="build" depends="init"&gt; <br />&lt;echo&gt; <br />Building... <br />&lt;/echo&gt; </p>
		<p>&lt;mkdir dir="${javac.dest}" /&gt; <br />&lt;javac srcdir="${java.source.dir}" <br />destdir="${javac.dest}" <br />classpath="${classpath}" <br />debug="on"/&gt; </p>
		<p>&lt;/target&gt; <br />&lt;!-- ================================================================= --&gt; <br />&lt;!-- Copy class files to tomcat dir. --&gt; <br />&lt;!-- ================================================================= --&gt; <br />&lt;target name="copy" depends="build"&gt; <br />&lt;copy todir="${webapp.dir}/com/bingo"&gt; <br />&lt;fileset dir="${javac.dest}/com/bingo"&gt; <br />&lt;include name="*.class"/&gt; <br />&lt;/fileset&gt; <br />&lt;/copy&gt; <br />&lt;copy todir="${webapp.dir}/com/bingo/util"&gt; <br />&lt;fileset dir="${javac.dest}/com/bingo/util"&gt; <br />&lt;include name="*.class"/&gt; <br />&lt;/fileset&gt; <br />&lt;/copy&gt; <br />&lt;copy todir="${webapp.dir}/com/bingo/database"&gt; <br />&lt;fileset dir="${javac.dest}/com/bingo/database"&gt; <br />&lt;include name="*.class"/&gt; <br />&lt;/fileset&gt; <br />&lt;/copy&gt; <br />&lt;copy todir="${webapp.dir}/com/bingo/dbocw"&gt; <br />&lt;fileset dir="${javac.dest}/com/bingo/dbocw"&gt; <br />&lt;include name="*.class"/&gt; <br />&lt;/fileset&gt; <br />&lt;/copy&gt; <br />&lt;copy todir="${webapp.dir}/com/bingo/finance/database"&gt; <br />&lt;fileset dir="${javac.dest}/com/bingo/finance/database"&gt; <br />&lt;include name="*.class"/&gt; <br />&lt;/fileset&gt; <br />&lt;/copy&gt; <br />&lt;copy todir="${webapp.dir}/com/bingo/finance/entity"&gt; <br />&lt;fileset dir="${javac.dest}/com/bingo/finance/entity"&gt; <br />&lt;include name="*.class"/&gt; <br />&lt;/fileset&gt; <br />&lt;/copy&gt; <br />&lt;copy todir="${webapp.dir}/com/bingo/finance/manager"&gt; <br />&lt;fileset dir="${javac.dest}/com/bingo/finance/manager"&gt; <br />&lt;include name="*.class"/&gt; <br />&lt;/fileset&gt; <br />&lt;/copy&gt; <br />&lt;/target&gt; </p>
		<p> </p>
		<p>&lt;!-- ================================================================= --&gt; <br />&lt;!-- Remove all generated (compiled) class files. --&gt; <br />&lt;!-- ================================================================= --&gt; <br />&lt;target name="clean" depends="init"&gt; <br />&lt;delete dir="${javac.dest}/" /&gt; <br />&lt;/target&gt; </p>
		<p>&lt;!-- ================================================================= --&gt; <br />&lt;!-- Remove all backup files. --&gt; <br />&lt;!-- ================================================================= --&gt; <br />&lt;target name="delete" depends="init"&gt; <br />&lt;delete &gt; <br />&lt;fileset dir="${java.source.dir}/com/bingo"&gt; <br />&lt;include name="*.bak"/&gt; <br />&lt;/fileset&gt; <br />&lt;/delete&gt; <br />&lt;delete &gt; <br />&lt;fileset dir="${java.source.dir}/com/bingo/util"&gt; <br />&lt;include name="*.bak"/&gt; <br />&lt;/fileset&gt; <br />&lt;/delete&gt; <br />&lt;delete &gt; <br />&lt;fileset dir="${java.source.dir}/com/bingo/database"&gt; <br />&lt;include name="*.bak"/&gt; <br />&lt;/fileset&gt; <br />&lt;/delete&gt; <br />&lt;delete &gt; <br />&lt;fileset dir="${java.source.dir}/com/bingo/finance/database"&gt; <br />&lt;include name="*.bak"/&gt; <br />&lt;/fileset&gt; <br />&lt;/delete&gt; <br />&lt;delete &gt; <br />&lt;fileset dir="${java.source.dir}/com/bingo/finance/entity"&gt; <br />&lt;include name="*.bak"/&gt; <br />&lt;/fileset&gt; <br />&lt;/delete&gt; <br />&lt;delete &gt; <br />&lt;fileset dir="${java.source.dir}/com/bingo/finance/manager"&gt; <br />&lt;include name="*.bak"/&gt; <br />&lt;/fileset&gt; <br />&lt;/delete&gt; <br />&lt;/target&gt; </p>
		<p> </p>
		<p>&lt;!-- ================================================================= --&gt; <br />&lt;!-- Remove the temporary manifest file, actual work is done in the --&gt; <br />&lt;!-- dependencies. --&gt; <br />&lt;!-- ================================================================= --&gt; </p>
		<p>&lt;target name="prejar" depends="build"&gt; <br />&lt;mkdir dir="${jar.dest}"/&gt; <br />&lt;filter token="version" value="${version}" /&gt; <br />&lt;copy file="${manifest.src}" tofile="${jar.dest}/manifest.mf" <br />filtering="true"/&gt; <br />&lt;/target&gt; </p>
		<p>&lt;!-- ================================================================= --&gt; <br />&lt;!-- This target Create bingo.jar --&gt; <br />&lt;!-- ================================================================= --&gt; <br />&lt;target name="jar" depends="prejar"&gt; <br />&lt;delete file="${jar.dest}/bingo.jar"/&gt; <br />&lt;jar jarfile="${jar.dest}/bingo.jar" basedir="${javac.dest}" <br />manifest="${jar.dest}/manifest.mf" <br />/&gt; <br />&lt;/target&gt; </p>
		<p>&lt;!-- ================================================================= --&gt; <br />&lt;!-- This target builds the javadoc files. --&gt; <br />&lt;!-- ================================================================= --&gt; <br />&lt;target name="javadoc" depends="build,init"&gt; <br />&lt;mkdir dir="${javadoc.dest}" /&gt; <br />&lt;javadoc sourcepath="${java.source.dir}" <br />destdir="${javadoc.dest}" <br />classpath="${classpath}" <br />packagenames="${PackageList}" <br />version="true" <br />protected="true" <br />author="true" <br />use="true" <br />windowtitle="Bingo Free Java Code Version ${version}" <br />header="Bingo Free Java Code${version}" <br />/&gt; <br />&lt;/target&gt; <br />&lt;/project&gt;</p>
<img src ="http://www.blogjava.net/shooper/aggbug/45317.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/shooper/" target="_blank">Shooper.Java</a> 2006-05-10 00:13 <a href="http://www.blogjava.net/shooper/articles/45317.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jakarta-log4j的使用(java调试工具)</title><link>http://www.blogjava.net/shooper/articles/45316.html</link><dc:creator>Shooper.Java</dc:creator><author>Shooper.Java</author><pubDate>Tue, 09 May 2006 16:12:00 GMT</pubDate><guid>http://www.blogjava.net/shooper/articles/45316.html</guid><wfw:comment>http://www.blogjava.net/shooper/comments/45316.html</wfw:comment><comments>http://www.blogjava.net/shooper/articles/45316.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/shooper/comments/commentRss/45316.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/shooper/services/trackbacks/45316.html</trackback:ping><description><![CDATA[
		<div class="clear">
		</div>
		<div class="item-body">
				<div class="item-content">
						<p>一：介绍 <br />log4j是jakarta的一个项目主要是为了调试使用的，为了不让是在程序中写很多System.out.println(); <br />我个人觉得是一个不错的工具，程序调试好以后你可以关掉log4j. <br />二：下载 <br />你可以从下面的地址下载到ant,目前版本：1.13 <br /><a href="http://jakarta.apache.org/builds/jakarta-log4j/release/v1.1.3/">http://jakarta.apache.org/builds/jakarta-log4j/release/v1.1.3/</a></p>
						<p>三：安装 <br />log4j不需要安装，你只需要把log4j.jar,log4j-core.jar放在classpath中你就可以使用。 </p>
						<p>
								<br />四：使用log4j <br />1:)copy log4j.jar,log4j-core.jar到classpath中，在tomcat4.03中你可以把它放在 <br />tomcat_home\common\lib目录下。 <br />2:设置属性文件 <br />log4j需要用到一个log4j.properties文件内容如下： <br />log4j.properties <br />===================================== <br />log4j.rootCategory=, A1 <br />log4j.appender.A1.layout=org.apache.log4j.PatternLayout <br />最简单的配置，如果希望很复杂，自己看文档。 </p>
						<p>3：写启动文件 <br />log4j的初始化有几种方式，我下面只提供一种方式。 <br />InitServlet.java (一个servlet) <br />================================== <br />import java.io.InputStream; <br />import java.io.IOException; <br />import java.util.Hashtable; <br />import java.util.Locale; <br />import java.util.MissingResourceException; <br />import javax.servlet.RequestDispatcher; <br />import javax.servlet.ServletException; <br />import javax.servlet.UnavailableException; <br />import javax.servlet.http.HttpServlet; <br />import javax.servlet.http.HttpServletRequest; <br />import javax.servlet.http.HttpServletResponse; <br />import javax.servlet.http.HttpSession; <br />import javax.servlet.*; <br />import java.io.*; </p>
						<p>public class InitServlet extends HttpServlet { </p>
						<p>protected String config = "/log4j.properties"; </p>
						<p>public void init() throws ServletException { <br />ServletContext sct = getServletContext(); <br />System.out.println("[Log4j]: The Root Path: " + sct.getRealPath("/")); <br />System.out.println("[Log4j]: InitServlet init start..."); <br />org.apache.log4j.PropertyConfigurator.configure(sct.getRealPath("/") + getServletConfig().getInitParameter("log4j")); <br />System.out.println("[Log4j]: InitServlet init over."); <br />} </p>
						<p>
								<br />public void doGet(HttpServletRequest request, <br />HttpServletResponse response) <br />throws IOException, ServletException { <br />; <br />} </p>
						<p>
								<br />public void doPost(HttpServletRequest request, <br />HttpServletResponse response) <br />throws IOException, ServletException { <br />; <br />} <br />} </p>
						<p>4:设置web.xml <br />上面写的servlet的在AppServer启动是就要运行，所以你需要配置一下web.xml <br />加上如下内容： <br />&lt;servlet&gt; <br />&lt;servlet-name&gt;init&lt;/servlet-name&gt; <br />&lt;servlet-class&gt;com.InitServlet&lt;/servlet-class&gt; <br />&lt;init-param&gt; <br />&lt;param-name&gt;log4j&lt;/param-name&gt; <br />&lt;param-value&gt;/log4j.properties&lt;/param-value&gt; <br />&lt;!--相对aplication的路径在ROOT/log4j.properties参照上面--&gt; <br />&lt;/init-param&gt; <br />&lt;load-on-startup&gt;1&lt;/load-on-startup&gt; <br />&lt;/servlet&gt; </p>
						<p>5:在程序中使用log4j; <br />private static org.apache.log4j.Category log = <br />org.apache.log4j.Category.getInstance(classname); <br />//classname java文件名\r </p>
						<p>log.debug("........."); <br />log.error("........."); <br />..... <br />具体的运用你可以看log4j的文档。 </p>
				</div>
		</div>
<img src ="http://www.blogjava.net/shooper/aggbug/45316.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/shooper/" target="_blank">Shooper.Java</a> 2006-05-10 00:12 <a href="http://www.blogjava.net/shooper/articles/45316.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>