﻿<?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/sitinspring/category/33627.html</link><description>博学、审问、慎思、明辨、笃行五者,废其一,非学也。</description><language>zh-cn</language><lastBuildDate>Fri, 08 Aug 2008 05:42:03 GMT</lastBuildDate><pubDate>Fri, 08 Aug 2008 05:42:03 GMT</pubDate><ttl>60</ttl><item><title>log4j在桌面程序和Web程序中的配置</title><link>http://www.blogjava.net/sitinspring/archive/2008/08/08/220883.html</link><dc:creator>漂泊者</dc:creator><author>漂泊者</author><pubDate>Fri, 08 Aug 2008 04:57:00 GMT</pubDate><guid>http://www.blogjava.net/sitinspring/archive/2008/08/08/220883.html</guid><wfw:comment>http://www.blogjava.net/sitinspring/comments/220883.html</wfw:comment><comments>http://www.blogjava.net/sitinspring/archive/2008/08/08/220883.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sitinspring/comments/commentRss/220883.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sitinspring/services/trackbacks/220883.html</trackback:ping><description><![CDATA[<p align="justify">注意：本文说到的log4j版本为1.2.15，使用的配置文件是属性文件（properties），如果这些与您的环境不符则请快速离开，以免耽误你的宝贵时间。</p>
<p align="justify">&nbsp;</p>
<p align="justify"><strong>一.log4j在桌面程序中的配置</strong></p>
<p align="justify">这个相对简单了，它的步骤就这样两步：</p>
<p align="justify">1）将log4j-1.2.15.jar引入到工程的lib目录中.<br />
2）确保配置文件log4j.properties在程序的代码目录(如src目录,cfg目录)中,它编译后应该位于类路径classes中.</p>
<p align="justify">&nbsp;</p>
<p align="justify">log4j.properties示例（可以拷贝使用）：</p>
<div class="highlighter" align="justify">
<ol class="highlighter-j">
    <li><span>log4j.rootLogger=<font color="#ff0000">debug,&nbsp;stdout,&nbsp;R</font></span>
    <li class="alt">
    <li><span>log4j.appender.stdout=org.apache.log4j.ConsoleAppender</span>
    <li class="alt"><span>log4j.appender.stdout.layout=org.apache.log4j.PatternLayout</span>
    <li>
    <li class="alt"><span>#&nbsp;Pattern&nbsp;to&nbsp;output&nbsp;the&nbsp;caller's&nbsp;file&nbsp;name&nbsp;and&nbsp;line&nbsp;number.</span>
    <li><span>log4j.appender.stdout.layout.ConversionPattern=%d&nbsp;%5p&nbsp;[%t]&nbsp;(%F:%L)&nbsp;-&nbsp;%m%n</span>
    <li class="alt">
    <li><span>log4j.appender.R=org.apache.log4j.RollingFileAppender</span>
    <li class="alt"><span>log4j.appender.R.File=<font color="#ff0000">输出log文件.log</font></span>
    <li>
    <li class="alt"><span>log4j.appender.R.MaxFileSize=1000KB</span>
    <li><span>#&nbsp;Keep&nbsp;one&nbsp;backup&nbsp;file</span>
    <li class="alt"><span>log4j.appender.R.MaxBackupIndex=</span><span class="number">1</span>
    <li>
    <li class="alt"><span>log4j.appender.R.layout=org.apache.log4j.PatternLayout</span>
    <li><span>log4j.appender.R.layout.ConversionPattern=%d&nbsp;%5p&nbsp;[%t]&nbsp;(%F:%L)&nbsp;-&nbsp;%m%n</span></li>
</ol>
</div>
<p class="alt" align="justify"><span>要对这个文件进行修改的话，基本上改两个地方就行了。</span></p>
<p class="alt" align="justify"><span>一个是输出文件名称，一个是输出等级设置。</span></p>
<p class="alt" align="justify"><span>1) 输出文件名称:<br />
log4j.appender.R.File=输出log文件.log</span></p>
<p class="alt" align="justify">&nbsp;</p>
<p class="alt" align="justify"><span>2) 输出等级:<br />
log4j.rootLogger=debug, stdout, R<br />
Debug说明只要是logger.debug以上的都记录</span></p>
<p class="alt" align="justify">&nbsp;</p>
<p align="justify">配置到这里，就结束了。下面请看如何在程序中使用log4j。</p>
<p align="justify">&nbsp;</p>
<p align="justify"><strong>二.log4j的使用</strong></p>
<p align="justify">1) 首先，那个类要用到log4j记录日志，就应该为类添加一个静态的成员变量loogger，示例如下：</p>
<div class="highlighter" align="justify">
<ol class="highlighter-j">
    <li><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;Main{</span>
    <li class="alt"><span>&nbsp;</span><span class="keyword">private</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;Logger&nbsp;logger&nbsp;=&nbsp;Logger.getLogger(Main.</span><span class="keyword">class</span><span>);</span>
    <li>
    <li class="alt"><span>&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;main(String[]&nbsp;args){</span>
    <li><span>&nbsp;&nbsp;logger.info(</span><span class="string">"成员管理程序启动"</span><span>);</span>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">new</span><span>&nbsp;MemberMngCtrl();&nbsp;&nbsp;</span>
    <li><span>&nbsp;}</span>
    <li class="alt"><span>}</span></li>
</ol>
</div>
<p align="justify">2) 其次，你就可以使用logger.debug ,logger.info, logger.warn, logger.error, logger.fatal等函数(记录等级依次提高)来记录日志内容了，确实是很简单方便的。<br />
&nbsp;</p>
<p align="justify"><strong>三.log4j在Web工程中的配置</strong></p>
<p align="justify">与桌面程序一样的是，properties文件也需要能被编译到classes（WEB-INF/classes/）中，建议将属性文件放在特定的目录下并设置为源码目录，另外放在WEB-INF\src下也不错。</p>
<p align="justify">这一步比前面稍多的是需要配置一个初始化log4j的initServlet，就是在一开始就启动的Servlet，代码如下：</p>
<div class="highlighter" align="justify">
<ol class="highlighter-j">
    <li><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;Log4jInit&nbsp;</span><span class="keyword">extends</span><span>&nbsp;HttpServlet&nbsp;{</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">final</span><span>&nbsp;</span><span class="keyword">long</span><span>&nbsp;serialVersionUID&nbsp;=&nbsp;-4499302208753939187L;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">static</span><span>&nbsp;Logger&nbsp;logger&nbsp;=&nbsp;Logger.getLogger(Log4jInit.</span><span class="keyword">class</span><span>);</span>
    <li class="alt">
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;init(ServletConfig&nbsp;config)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;ServletException&nbsp;{</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;prefix&nbsp;=&nbsp;config.getServletContext().getRealPath(</span><span class="string">"/"</span><span>);</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;file&nbsp;=&nbsp;config.getInitParameter(</span><span class="string">"log4j"</span><span>);</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;filePath&nbsp;=&nbsp;prefix&nbsp;+&nbsp;file;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Properties&nbsp;props&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Properties();</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileInputStream&nbsp;istream&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;FileInputStream(filePath);</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;props.load(istream);</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;istream.close();</span>
    <li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;logFile&nbsp;=&nbsp;prefix&nbsp;+&nbsp;props.getProperty(</span><span class="string">"log4j.appender.R.File"</span><span>);</span><span class="comment">//设置路径 </span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;props.setProperty(</span><span class="string">"log4j.appender.R.File"</span><span>,logFile);</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;装入log4j配置信息 </span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PropertyConfigurator.configure(props);</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(IOException&nbsp;e)&nbsp;{</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span class="string">"Could&nbsp;not&nbsp;read&nbsp;configuration&nbsp;file&nbsp;["</span><span>&nbsp;+&nbsp;filePath&nbsp;+&nbsp;</span><span class="string">"]."</span><span>);</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span class="string">"Ignoring&nbsp;configuration&nbsp;file&nbsp;["</span><span>&nbsp;+&nbsp;filePath&nbsp;+&nbsp;</span><span class="string">"]."</span><span>);</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span>
    <li><span>}</span></li>
</ol>
</div>
<p align="justify"><span><font style="background-color: #f8f8f8" color="#000000">然后，在Web.xml中配置一下，让它在一开始启动就可以了。</font></span><span></p>
<div class="highlighter" align="justify">
<ol class="highlighter-xml">
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;InitServlet&nbsp;--&gt;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet</span><span class="tag">&gt;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>log4j-init</span><span class="tag">&lt;/</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet-class</span><span class="tag">&gt;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com.sitinspring.action.Log4jInit</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">servlet-class</span><span class="tag">&gt;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">init-param</span><span class="tag">&gt;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">param-name</span><span class="tag">&gt;</span><span>log4j</span><span class="tag">&lt;/</span><span class="tag-name">param-name</span><span class="tag">&gt;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">param-value</span><span class="tag">&gt;</span><span>WEB-INF/classes/log4j.properties</span><span class="tag">&lt;/</span><span class="tag-name">param-value</span><span class="tag">&gt;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">init-param</span><span class="tag">&gt;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">load-on-startup</span><span class="tag">&gt;</span><span>1</span><span class="tag">&lt;/</span><span class="tag-name">load-on-startup</span><span class="tag">&gt;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">servlet</span><span class="tag">&gt;</span></li>
</ol>
</div>
<p class="alt" align="justify"><span class="tag"><strong><font color="#0000ff">全文完。</font></strong></span></p>
</span>
 <img src ="http://www.blogjava.net/sitinspring/aggbug/220883.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sitinspring/" target="_blank">漂泊者</a> 2008-08-08 12:57 <a href="http://www.blogjava.net/sitinspring/archive/2008/08/08/220883.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>