﻿<?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-bob-文章分类-log4j</title><link>http://www.blogjava.net/keweibo/category/46973.html</link><description>一专  Java 多能  Delphi,Powerbuilder ... </description><language>zh-cn</language><lastBuildDate>Sun, 29 Apr 2012 03:05:57 GMT</lastBuildDate><pubDate>Sun, 29 Apr 2012 03:05:57 GMT</pubDate><ttl>60</ttl><item><title>RCP开发---Log4j配置</title><link>http://www.blogjava.net/keweibo/articles/376986.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sat, 28 Apr 2012 09:56:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/376986.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/376986.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/376986.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/376986.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/376986.html</trackback:ping><description><![CDATA[<div style="text-align: left;"><div>运行控制台打印:(只在控制台上，不在.log文件中)</div><div>log4j:WARN No appenders could be found for logger (myrcp.OpenViewAction).</div><div>log4j:WARN Please initialize the log4j system properly.</div><div>这是因为没有添加Log4j的配置信息。</div><div></div><div>在启动RCP的插件中的start方法里：</div><div>&nbsp; &nbsp; public void start(BundleContext context) throws Exception {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; super.start(context);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; plugin = this; &nbsp; &nbsp; &nbsp;&nbsp;</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; Properties prop = new Properties();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; try {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; prop.load(Activator.class.getResourceAsStream("log4j.properties")); //$NON-NLS-1$</div><div>&nbsp; &nbsp; &nbsp; &nbsp; } catch (IOException e) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // e.printStackTrace();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; }</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; PropertyConfigurator.configure(prop);</div><div>&nbsp; &nbsp; }</div><div></div><div>在myrcp.Activator同级目录下添加log4j.properties：&nbsp;</div></div><img src ="http://www.blogjava.net/keweibo/aggbug/376986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2012-04-28 17:56 <a href="http://www.blogjava.net/keweibo/articles/376986.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>log4j/log4e的使用</title><link>http://www.blogjava.net/keweibo/articles/337687.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Wed, 10 Nov 2010 01:18:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/337687.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/337687.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/337687.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/337687.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/337687.html</trackback:ping><description><![CDATA[轉自:http://www.blogjava.net/cinderella/archive/2005/06/13/6030.aspx<br />
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="2">&nbsp;原文作者：天才&nbsp; &nbsp; Kylin项目小组</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt;"><font size="2">log4j简介</font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt;"><span style="font-family: 宋体;"><font size="2">简单的说<span lang="EN-US">log4j就是帮助开发人员进行日志输出管理的API类库。它最重要的特点就</span></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="2"><span style="font-family: 宋体;">可以</span><span style="font-family: 宋体;">配置文件灵活的设置</span><span style="font-family: 宋体;">日志信息的优先级、日志信息的输出目的地以及日志信息的输出格式。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.75pt;"><font size="2"><span style="font-family: 宋体;" lang="EN-US">Log4j除了可以记录程序运行日志信息外还有一重要的功能就是用来</span><span style="font-family: 宋体;">显示调试信息。程序员经常会遇到脱离<span lang="EN-US">java
ide环境调试程序的情况，这时大多数人会选择使用System.out.println语句输出某个变量值的方法进行调试。这样会带来一个非常麻烦的问
题：一旦哪天程序员决定不要显示这些System.out.println的东西了就只能一行行的把这些垃圾语句注释掉。若哪天又需调试变量值，则只能再
一行行去掉这些注释恢复System.out.println语句。使用log4j可以很好的处理类似情况。</span></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt;"><span style="font-family: 宋体;" lang="EN-US"><font size="2">log4j使用方法</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 22.05pt;"><span style="font-family: 宋体;"><font size="2">下面介绍的是<span lang="EN-US">log4j一些理论方面的知识，读者觉得枯燥的话可以跳过本节直接阅读第三节实例部分。</span></font></span></p>
<p><span style="font-size: 10.5pt;"><font size="2">　　<span>1、定义配置文件</span></font></span></p>
<p><span style="font-size: 10.5pt;"><font size="2">　<span lang="EN-US"><span>&nbsp; </span>首
先使用配置文件将使我们的应用程序更加灵活配置log日志输出方式包括输出优先级、输出目的地、输出格式。Log4j支持两种配置文件格式，一种是XML
格式的文件，一种是Java特性文件log4j.properties（键=值）。下面将介绍使用log4j.properties文件作为配置文件的方
法：</span></font></span></p>
<p><font size="2"><span style="font-size: 10.5pt;">　　</span><span style="font-size: 10.5pt;" lang="EN-US"><span>①</span></span><span style="font-size: 10.5pt;" lang="EN-US">配置根Logger，其语法为：0</span></font></p>
<p><span style="font-size: 10.5pt;"><font size="2">　　<span lang="EN-US">log4j.rootLogger = [ level ] , appenderName, appenderName, &#8230; </span></font></span></p>
<p><span style="font-size: 10.5pt;"><font size="2">　　其中，<span lang="EN-US">level
是日志记录的优先级，分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。Log4j建议只使用四个级别，优
先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别，您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定
义了INFO级别，则应用程序中所有DEBUG级别的日志信息将不被打印出来。
appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。 </span></font></span></p>
<p><font size="2"><span style="font-size: 10.5pt;">　　</span><span style="font-size: 10.5pt;" lang="EN-US"><span>②</span></span><span style="font-size: 10.5pt;" lang="EN-US">配置日志信息输出目的地Appender，其语法为：</span></font></p>
<p><span style="font-size: 10.5pt;"><font size="2">　　</font><span lang="EN-US"><font size="2">log4j.appender.appenderName = fully.qualified.name.of.appender.class <br />
log4j.appender.appenderName.option1 = value1 <br />
&#8230; <br />
log4j.appender.appenderName.option = valueN </font></span></span></p>
<p><span style="font-size: 10.5pt;"><font size="2">　　其中，</font><span lang="EN-US"><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（将日志信息以流格式发送到任意指定的地方） </font></span></span></p>
<p><font size="2"><span style="font-size: 10.5pt;">　 </span><span style="font-size: 10.5pt;" lang="EN-US"><span>③</span></span><span style="font-size: 10.5pt;" lang="EN-US">配置日志信息的格式（布局），其语法为：</span></font></p>
<p><span style="font-size: 10.5pt;"><font size="2">　　</font><span lang="EN-US"><font size="2">log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class <br />
log4j.appender.appenderName.layout.option1 = value1 <br />
&#8230; <br />
log4j.appender.appenderName.layout.option = valueN </font></span></span></p>
<p><span style="font-size: 10.5pt;"><font size="2">　　其中，</font><span lang="EN-US"><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（包含日志产生的时间、线程、类别等等信息） </font></span></span></p>
<p><span style="font-size: 10.5pt;"><font size="2">　　<span lang="EN-US">Log4J采用类似C语言中的printf函数的打印格式格式化日志信息，打印参数如下： %m 输出代码中指定的消息</span></font></span></p>
<p><span style="font-size: 10.5pt;"><font size="2">　　</font><span lang="EN-US"><font size="2">%p 输出优先级，即DEBUG，INFO，WARN，ERROR，FATAL <br />
%r 输出自应用启动到输出该log信息耗费的毫秒数 <br />
%c 输出所属的类目，通常就是所在类的全名 <br />
%t 输出产生该日志事件的线程名 <br />
%n 输出一个回车换行符，Windows平台为&#8220;\r\n&#8221;，Unix平台为&#8220;\n&#8221; <br />
%d 输出日志时间点的日期或时间，默认格式为ISO8601，也可以在其后指定格式，比如：%d{yyy MMM dd HH:mm:ss,SSS}，输出类似：</font></span></span><span style="font-size: 10.5pt;" lang="EN-US"><font size="2">2002年10月18日</font></span><span style="font-size: 10.5pt;" lang="EN-US"><font size="2"> 22：10：28，921 <br />
%l 输出日志事件的发生位置，包括类目名、发生的线程，以及在代码中的行数。举例：Testlog4.main(TestLog4.java:10) </font></span></p>
<p><span style="font-size: 10.5pt;"><font size="2">　　<span>2、在代码中使用Log4j </span></font></span></p>
<p><font size="2"><span style="font-size: 10.5pt;">　　</span><span style="font-size: 10.5pt;" lang="EN-US"><span>①</span></span><span style="font-size: 10.5pt;" lang="EN-US">得到记录器</span></font></p>
<p><span style="font-size: 10.5pt;"><font size="2">　　使用<span lang="EN-US">Log4j，第一步就是获取日志记录器，这个记录器将负责控制日志信息。其语法为： </span></font></span></p>
<p><span style="font-size: 10.5pt;"><font size="2">　　<span lang="EN-US">public static Logger getLogger( String name) </span></font></span></p>
<p><span style="font-size: 10.5pt;"><font size="2">　　通过指定的名字获得记录器，如果必要的话，则为这个名字创建一个新的记录器。<span lang="EN-US">Name一般取本类的名字，比如： </span></font></span></p>
<p><span style="font-size: 10.5pt;"><font size="2">　　<span lang="EN-US">static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () )</span></font></span></p>
<p><font size="2"><span style="font-size: 10.5pt;">　　</span><span style="font-size: 10.5pt;" lang="EN-US"><span>②</span></span><span style="font-size: 10.5pt;" lang="EN-US">读取配置文件 </span></font></p>
<p><span style="font-size: 10.5pt;"><font size="2">　　当获得了日志记录器之后，第二步将配置<span lang="EN-US">Log4j环境，其语法为：</span></font></span></p>
<p style="text-indent: 21pt;"><span style="font-size: 10.5pt;" lang="EN-US"><font size="2">BasicConfigurator.configure ()： 自动快速地使用缺省Log4j环境。<br />
PropertyConfigurator.configure ( String configFilename) ：读取使用Java的特性文件编写的配置文件。</font></span></p>
<p style="text-indent: 21pt;"><font size="2"><span style="font-size: 10.5pt;">例：<span lang="EN-US">PropertyConfigurator.configure</span></span><span style="font-size: 10.5pt;" lang="EN-US">(".\\src\\log4j.properties")</span></font><span style="font-size: 10.5pt;" lang="EN-US"><br />
<font size="2">　　DOMConfigurator.configure ( String filename ) ：读取XML形式的配置文件。</font></span></p>
<p><font size="2"><span style="font-size: 10.5pt;">　　</span><span style="font-size: 10.5pt;" lang="EN-US"><span>③</span></span><span style="font-size: 10.5pt;" lang="EN-US">插入记录信息（格式化日志信息）</span></font></p>
<p><span style="font-size: 10.5pt;"><font size="2">　　当上两个必要步骤执行完毕，就可轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方，其语法如下：</font></span></p>
<p><span style="font-size: 10.5pt;"><font size="2">　　</font><span lang="EN-US"><font size="2">Logger.debug ( Object message ) ;<br />
Logger.info ( Object message ) ;<br />
Logger.warn ( Object message ) ;<br />
Logger.error ( Object message ) ;</font></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt;"><span style="font-family: 宋体;" lang="EN-US"><font size="2">log4j范例程序</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体;"><font size="2">下面将使用一个最简单的范例程序来进一步说明<span lang="EN-US">log4j的使用方法。程序代码如下：</span></font></span></p>
<p style="line-height: 6pt;"><span style="color: navy;" lang="EN-US"><font size="2">&nbsp;</font></span></p>
<p style="line-height: 8pt;"><span><font size="2">import org.apache.log4j.*;</font></span></p>
<p style="line-height: 8pt;"><span style="color: black;" lang="EN-US"><font size="2">&nbsp;</font></span></p>
<p style="line-height: 8pt;"><font size="2"><span>public class</span><span style="color: black;" lang="EN-US"> LogTest </span><span style="color: navy;" lang="EN-US">{</span></font></p>
<p style="line-height: 8pt;"><span style="color: black;" lang="EN-US"><font size="2">&nbsp;</font></span></p>
<p style="line-height: 8pt;"><span style="color: black;" lang="EN-US"><font size="2">&nbsp;</font></span></p>
<p style="line-height: 8pt;"><font size="2"><span><span>&nbsp;&nbsp;&nbsp; </span>static</span><span style="color: black;" lang="EN-US"> Logger logger = Logger.getLogger(LogTest.class.getName());</span></font></p>
<p style="line-height: 8pt;"><span style="color: black;" lang="EN-US"><font size="2">&nbsp;</font></span></p>
<p style="line-height: 8pt;"><font size="2"><span><span>&nbsp;&nbsp;&nbsp; </span>public</span><span> static</span><span> void</span><span style="color: black;" lang="EN-US"> main(String[] args) </span><span style="color: navy;" lang="EN-US">{</span></font></p>
<p style="line-height: 8pt;"><span style="color: black;" lang="EN-US"><font size="2">&nbsp;</font></span></p>
<p style="line-height: 8pt;"><font size="2"><span style="color: black;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt;" lang="EN-US">PropertyConfigurator.configure ( &#8220;.\\src\</span><span style="color: black; font-family: Arial;" lang="EN-US">log4j.properties</span><span style="font-size: 10.5pt;" lang="EN-US">&#8221;)</span><span style="font-size: 10.5pt; font-family: 宋体;">；</span></font></p>
<p style="text-indent: 40pt; line-height: 8pt;"><font size="2"><span style="color: black;" lang="EN-US">logger.debug(</span><span style="color: red;" lang="EN-US">"Debug ..."</span><span style="color: black;" lang="EN-US">);</span></font></p>
<p style="line-height: 8pt;"><span style="color: black;" lang="EN-US"><font size="2">&nbsp;</font></span></p>
<p style="line-height: 8pt;"><font size="2"><span style="color: black;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>logger.info(</span><span style="color: red;" lang="EN-US">"Info ..."</span><span style="color: black;" lang="EN-US">);</span></font></p>
<p style="line-height: 8pt;"><span style="color: black;" lang="EN-US"><font size="2">&nbsp;</font></span></p>
<p style="line-height: 8pt;"><font size="2"><span style="color: black;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>logger.warn(</span><span style="color: red;" lang="EN-US">"Warn ..."</span><span style="color: black;" lang="EN-US">);</span></font></p>
<p style="line-height: 8pt;"><span style="color: black;" lang="EN-US"><font size="2">&nbsp;</font></span></p>
<p style="line-height: 8pt;"><font size="2"><span style="color: black;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>logger.error(</span><span style="color: red;" lang="EN-US">"Error ..."</span><span style="color: black;" lang="EN-US">);</span></font></p>
<p style="line-height: 8pt;"><span style="color: black;" lang="EN-US"><font size="2">&nbsp;</font></span></p>
<p style="line-height: 6pt;"><font size="2"><span style="color: black;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span></span><span style="color: navy;" lang="EN-US">}</span></font></p>
<p style="line-height: 6pt;"><font size="2"><span style="color: navy;" lang="EN-US">}</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体;"><font size="2">程序说明：</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 10.5pt;"><font size="2"><span style="font-family: 宋体;" lang="EN-US"><span>①</span></span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US"> static Logger logger = Logger.getLogger(LogTest.class.getName());</span><span style="font-size: 10pt; color: black; font-family: 宋体;">就是创建一个属于</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">LogTest</span><span style="font-size: 10pt; color: black; font-family: 宋体;">类的</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Logger</span><span style="font-size: 10pt; color: black; font-family: 宋体;">对象，创建时要告知</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Logger</span><span style="font-size: 10pt; color: black; font-family: 宋体;">你当前的</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Class</span><span style="font-size: 10pt; color: black; font-family: 宋体;">是什么。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 10pt;"><span style="font-size: 10pt; color: black; font-family: 宋体;">②</span><font size="2"><span lang="EN-US"> PropertyConfigurator.configure ( &#8220;</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">log4j.properties</span><span lang="EN-US">&#8221;)</span><span style="font-family: 宋体;">就是说使用当前工程目录下的</span><span lang="EN-US">src</span><span style="font-family: 宋体;">文件夹中的</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">log4j.properties</span><span style="font-size: 10pt; color: black; font-family: 宋体;">文件作为配置文件。若将</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">log4j.properties</span><span style="font-size: 10pt; color: black; font-family: 宋体;">放在工程根目录下也可不写此句，程序会自动找到配置文件。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 10pt;"><span style="font-size: 10pt; color: black; font-family: 宋体;">③</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US"> logger.debug</span><span style="font-size: 10pt; color: black; font-family: 宋体;">就是输出</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">debug</span><span style="font-size: 10pt; color: black; font-family: 宋体;">的信息，</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">logger.info</span><span style="font-size: 10pt; color: black; font-family: 宋体;">就是输出提示信息，</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">logger.warn</span><span style="font-size: 10pt; color: black; font-family: 宋体;">就是显示警告信息，</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">logger.error</span><span style="font-size: 10pt; color: black; font-family: 宋体;">就是显示错误信息。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: 宋体;">下面是配置文件</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">log4j.properties</span><span style="font-size: 10pt; color: black; font-family: 宋体;">的内容：</span></p>
<p><font size="2"><span style="color: black;" lang="EN-US">log4j.rootCategory=DEBUG, stdout</span><span style="color: black; font-family: 宋体;">，</span><span style="color: black;" lang="EN-US">R</span></font></p>
<p><span style="color: black;" lang="EN-US"><font size="2">log4j.appender.stdout=org.apache.log4j.ConsoleAppender</font></span></p>
<p><span style="color: black;" lang="EN-US"><font size="2">log4j.appender.stdout.layout=org.apache.log4j.PatternLayout</font></span></p>
<p><span style="color: black;" lang="EN-US"><font size="2">log4j.appender.stdout.layout.ConversionPattern=%5p (%F:%L) - %m%n</font></span></p>
<p><span style="color: black;" lang="EN-US"><font size="2">log4j.appender.R=org.apache.log4j.RollingFileAppender</font></span></p>
<p><span style="color: black;" lang="EN-US"><font size="2">log4j.appender.R.File=log.txt</font></span></p>
<p><span style="color: black;" lang="EN-US"><font size="2">log4j.appender.R.MaxFileSize=100KB</font></span></p>
<p><span style="color: black;" lang="EN-US"><font size="2">log4j.appender.R.MaxBackupIndex=1</font></span></p>
<p><span style="color: black;" lang="EN-US"><font size="2">log4j.appender.R.layout=org.apache.log4j.PatternLayout</font></span></p>
<p><font size="2"><span style="color: black;" lang="EN-US">log4j.appender.R.layout.ConversionPattern=%d</span><span style="color: navy;" lang="EN-US">{</span><span style="color: black;" lang="EN-US">yyyy MMM dd HH:mm:ss</span><span style="color: navy;" lang="EN-US">}</span><span style="color: black;" lang="EN-US"> %-5p %c - %m%n</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体;"><font size="2">程序说明：</font></span></p>
<p><font size="2"><span style="font-family: 宋体;" lang="EN-US"><span>①</span></span><span style="color: black;" lang="EN-US"> log4j.rootCategory=DEBUG, stdout</span><span style="color: black; font-family: 宋体;">，</span><span style="color: black;" lang="EN-US">R</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: 宋体;">就是说我要显示所有优先权等於和高于</span><span>Debug的信息。<br />
"stdout"，</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">&#8221;R&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体;">表示我定义了两个输出端</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">(</span><span style="font-size: 10pt; color: black; font-family: 宋体;">随便什么名字都好</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">)</span><span style="font-size: 10pt; color: black; font-family: 宋体;">。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: 宋体;">②</span><span style="font-size: 10pt; color: black; font-family: 宋体;">下面的三行说</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">stdout</span><span style="font-size: 10pt; color: black; font-family: 宋体;">输出端其实是标准输出</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Console</span><span style="font-size: 10pt; color: black; font-family: 宋体;">，也就是屏幕。输出的格式是</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Pattern</span><font size="2"><span style="color: black;" lang="EN-US">Layout</span><span style="font-size: 10pt; color: black; font-family: 宋体;">。转换方式是</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">%5p (%F:%L) - %m%n</span><span style="font-size: 10pt; color: black; font-family: 宋体;">，即前五格用来显示优先权，再显示当前的文件名，加当前的行数。最后是</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">logger.debug()</span><span style="font-size: 10pt; color: black; font-family: 宋体;">或</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">logger.info()</span><span style="font-size: 10pt; color: black; font-family: 宋体;">或</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">logger.warn()</span><span style="font-size: 10pt; color: black; font-family: 宋体;">或</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">logger.error()</span><span style="font-size: 10pt; color: black; font-family: 宋体;">里的信息。</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">%n</span><span style="font-size: 10pt; color: black; font-family: 宋体;">表示回车空行。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: 宋体;">③</span><span style="font-size: 10pt; color: black; font-family: 宋体;">再加上下面六行则</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">log</span><span style="font-size: 10pt; color: black; font-family: 宋体;">信息不光显示在屏幕上，而且将被保存在一个叫</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">"log.txt"</span><span style="font-size: 10pt; color: black; font-family: 宋体;">的文件里，文件最大为</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">100KB</span><span style="font-size: 10pt; color: black; font-family: 宋体;">。如果文件大小超过</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">100KB</span><span style="font-size: 10pt; color: black; font-family: 宋体;">，文件会被备份成</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">"log.txt.1"</span><span style="font-size: 10pt; color: black; font-family: 宋体;">，新的</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">"log.txt"</span><span style="font-size: 10pt; color: black; font-family: 宋体;">继续记录</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">log</span><span style="font-size: 10pt; color: black; font-family: 宋体;">信息。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: 宋体;">接下来我们可以改变</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">log4j.properties</span><span style="font-size: 10pt; color: black; font-family: 宋体;">，而不需重新编译就可以控制</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">log</span><span style="font-size: 10pt; color: black; font-family: 宋体;">信息是否显示、</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">log</span><span style="font-size: 10pt; color: black; font-family: 宋体;">信息的输出端类型、输出方式、输出格式，等等。举例如下：</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: 宋体;">①</span><span style="font-size: 10pt; color: black; font-family: 宋体;">在</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">log4j.properties</span><span style="font-size: 10pt; color: black; font-family: 宋体;">文件里把</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">"log4j.rootCategory=DEBUG,stdout,R"</span><span style="font-size: 10pt; color: black; font-family: 宋体;">改写成</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">"log4j.rootCategory=OFF, stdout,R"</span><span style="font-size: 10pt; color: black; font-family: 宋体;">，这样所有的</span><span>log信息都不会显示了；解决了本文开始提出的问题。<br />
②</span><span style="font-size: 10pt; color: black; font-family: 宋体;">在</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">log4j.properties</span><span style="font-size: 10pt; color: black; font-family: 宋体;">文件里把</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">"log4j.rootCategory=DEBUG,stdout,R"</span><span style="font-size: 10pt; color: black; font-family: 宋体;">改写成</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">"log4j.rootCategory=INFO, stdout,R"</span><span style="font-size: 10pt; color: black; font-family: 宋体;">，这样只显示</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">INFO, WARN, ERROR</span><span style="font-size: 10pt; color: black; font-family: 宋体;">的</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">log</span><span style="font-size: 10pt; color: black; font-family: 宋体;">信息，而</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">DEBUG</span><span style="font-size: 10pt; color: black; font-family: 宋体;">信息不会被显示；</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体;" lang="EN-US"><font size="2">&nbsp;</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt;"><span style="font-family: 宋体;"><font size="2">在<span lang="EN-US">web程序中使用log4j注意问题</span></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"><font size="2"><span style="font-family: 宋体;" lang="EN-US"><span>1、<span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体;">由于<span lang="EN-US">jsp或servlet在执行状态时没有当前路径概念，所有使用</span></span><span lang="EN-US">PropertyConfigurator.configure</span><span style="font-family: 宋体;">（</span><span lang="EN-US">String</span><span style="font-family: 宋体;">）语句找</span><span lang="EN-US">log4j.properties</span><span style="font-family: 宋体;">文件时要给出相对于当前</span><span lang="EN-US">jsp</span><span style="font-family: 宋体;">或</span><span lang="EN-US">servlet</span><span style="font-family: 宋体;">的路径转化成为一个绝对的文件系统路径。方法是使用</span><span lang="EN-US">servletcontext.getrealpath(string)</span><span style="font-family: 宋体;">语句。例：</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: 宋体;" lang="EN-US">//得到当前jsp路径</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: 宋体;" lang="EN-US">String prefix =<span>&nbsp; </span>getServletContext().getRealPath(</span><span style="font-size: 10pt; font-family: 宋体;" lang="EN-US">"/"<span style="color: black;">);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: 宋体;" lang="EN-US">//读取</span><span style="font-size: 10pt; font-family: 宋体;" lang="EN-US">log4j.properties</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: 宋体;" lang="EN-US">PropertyConfigurator.configure(prefix+</span><span style="font-size: 10pt; font-family: 宋体;" lang="EN-US">"\\WEB-INF\\log4j.properties"<span style="color: black;">);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: 宋体;" lang="EN-US">2、相应的log4j.properties设置某个属性时也要在程序中设置绝对路径。例：</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; font-family: 宋体;" lang="EN-US">log4j.appender.R.File属性设置日志文件存放位置。我们可以用读写.properties配置文件的方法进行灵活设置。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体;"><span lang="EN-US"><br />
<font size="2">log4e使用说明</font></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span style="font-family: 宋体;">在了解了<span lang="EN-US">log4j的功能后，我们肯定会我们的程序中</span></span><span style="font-size: 10pt; color: black; font-family: 宋体;">编写一些</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Log4j</span><span style="font-size: 10pt; color: black; font-family: 宋体;">日志记录。对于使用</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Eclipse</span><span style="font-size: 10pt; color: black; font-family: 宋体;">的程序员</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Log4e</span><span style="font-size: 10pt; color: black; font-family: 宋体;">将是我们最得力的</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">log4j</span><span style="font-size: 10pt; color: black; font-family: 宋体;">日志编写助手，现在开始</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Log4e</span><span style="font-size: 10pt; color: black; font-family: 宋体;">之旅。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 20pt;"><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Log4e</span><span style="font-size: 10pt; color: black; font-family: 宋体;">是一个免费的</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Eclipse Plugin</span><span style="font-size: 10pt; color: black; font-family: 宋体;">，它可帮助你在你的</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Java</span><span style="font-size: 10pt; color: black; font-family: 宋体;">工程中快速加入</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Log</span><span style="font-size: 10pt; color: black; font-family: 宋体;">；</span><span style="font-size: 10pt; color: black; font-family: Arial;"> </span><span style="font-size: 10pt; color: black; font-family: 宋体;">我们可以在</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US"><a href="http://log4e.jayefem.de/index.php/Download">http://log4e.jayefem.de/index.php/Download</a></span><span style="font-size: 10pt; color: black; font-family: 宋体;">网站上下载</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Log4e</span><span style="font-size: 10pt; color: black; font-family: 宋体;">最新版本。下载后将相应文件夹拷贝到</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Eclipse</span><span style="font-size: 10pt; color: black; font-family: 宋体;">的插件目录下，重新</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Eclipse</span><span style="font-size: 10pt; color: black; font-family: 宋体;">，在首选项中会多出一个</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Log4e</span><span style="font-size: 10pt; color: black; font-family: 宋体;">选项。</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 20pt;"><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Log4e</span><span style="font-size: 10pt; color: black; font-family: 宋体;">可以有多个插入</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Log</span><span style="font-size: 10pt; color: black; font-family: 宋体;">为一个方法、类，当然也可以在当前位置插入</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Log</span><span style="font-size: 10pt; color: black; font-family: 宋体;">，同时其也可以把</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Sysout.out.println()</span><span style="font-size: 10pt; color: black; font-family: 宋体;">的转换为</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">log</span><span style="font-size: 10pt; color: black; font-family: 宋体;">；所有的这一切只需要你点点鼠标或者按一次快捷键，下面我们只以为一个方法插入</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Log</span><span style="font-size: 10pt; color: black; font-family: 宋体;">为例来讲解</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 20pt;"><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US"><img alt="1.JPG" src="../../images/blogjava_net/cinderella/log4j/1.JPG" border="0" height="427" width="558" /><br />
</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: 宋体;">在</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Java</span><span style="font-size: 10pt; color: black; font-family: 宋体;">编辑上下文中点击右键，选择</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Log4E</span><span style="font-size: 10pt; color: black; font-family: 宋体;">，你将看到如下界面：</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: 宋体;"><img alt="2.JPG" src="../../images/blogjava_net/cinderella/log4j/2.JPG" border="0" height="440" width="690" />点击</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US">Insert Log Statement For This Method</span><span style="font-size: 10pt; color: black; font-family: 宋体;">，你将看到验证页面：</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US"><img alt="3.JPG" src="../../images/blogjava_net/cinderella/log4j/3.JPG" border="0" height="420" width="658" /><br />
Finish</span><span style="font-size: 10pt; color: black; font-family: 宋体;">后这时你将看到插入</span><span>Log后的函数如下：<br />
<img alt="4.JPG" src="../../images/blogjava_net/cinderella/log4j/4.JPG" border="0" height="534" width="690" /><br />
Log4e</span><span style="font-size: 10pt; color: black; font-family: 宋体;">更多的实例参照</span><span style="font-size: 10pt; color: black; font-family: Arial;" lang="EN-US"><a href="http://log4e.jayefem.de/">http://log4e.jayefem.de</a></span></p>
<br />
<br />
 <img src ="http://www.blogjava.net/keweibo/aggbug/337687.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">Ke</a> 2010-11-10 09:18 <a href="http://www.blogjava.net/keweibo/articles/337687.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>