﻿<?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-DreamAngel-随笔分类-log4j</title><link>http://www.blogjava.net/DreamAngel/category/50092.html</link><description>如果你希望成功，以恒心为良友，以经验为参谋，以小心为兄弟，以希望为哨兵。</description><language>zh-cn</language><lastBuildDate>Wed, 15 Feb 2012 12:05:59 GMT</lastBuildDate><pubDate>Wed, 15 Feb 2012 12:05:59 GMT</pubDate><ttl>60</ttl><item><title>Log4j中利用相对路径</title><link>http://www.blogjava.net/DreamAngel/archive/2012/02/15/370031.html</link><dc:creator>飞翔天使</dc:creator><author>飞翔天使</author><pubDate>Wed, 15 Feb 2012 08:03:00 GMT</pubDate><guid>http://www.blogjava.net/DreamAngel/archive/2012/02/15/370031.html</guid><wfw:comment>http://www.blogjava.net/DreamAngel/comments/370031.html</wfw:comment><comments>http://www.blogjava.net/DreamAngel/archive/2012/02/15/370031.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamAngel/comments/commentRss/370031.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamAngel/services/trackbacks/370031.html</trackback:ping><description><![CDATA[缺省情形下我们只能在log4j.properties中搭配绝对路径。这么一来，我们在系统部署、环境移植等环节就会带来很大的不便，必须将路径改来改去。因而，我们要利用下面的措施实现log4j.properties中的相对路径。<br />log4j.properties文件配置如下：<br />log4j.appender.Rlogfile=org.apache.log4j.RollingFileAppender<br />log4j.appender.Rlogfile.layout=org.apache.log4j.PatternLayout<br />log4j.appender.Rlogfile.layout.ConversionPattern=%d %p [%c] - &lt;%m&gt;%n<br />log4j.appender.Rlogfile.File=${webRoot}/logs/log.log<br />log4j.appender.Rlogfile.MaxFileSize=2048KB<br />log4j.appender.Rlogfile.MaxBackupIndex=10<br />这里，我们使用${webRoot}来取得应用路径，webRoot是个变量。我们是从哪里取得的值呢？是从我们自己的类中，因此必须写这个类。 
<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.clientmanager.util;<br /><br /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletConfig;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletException;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.http.HttpServlet;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.log4j.PropertyConfigurator;<br /><br /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Log4jInit&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;HttpServlet&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;init(ServletConfig&nbsp;config)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;ServletException&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;prefix&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;config.getServletContext().getRealPath(</span><span style="color: #000000">"</span><span style="color: #000000">/</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">获取当前路径</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;file&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;config.getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">log4j</span><span style="color: #000000">"</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">从web.xml中获取参数值,找到log4j这个文件</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.setProperty(</span><span style="color: #000000">"</span><span style="color: #000000">webRoot</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;prefix);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">log4j.properties文件中的变量是在这里设置的</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(file&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PropertyConfigurator.configure(prefix&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;file);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</span></div><font face="Verdana">web.xml加载这个servlet
<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">log4j-init</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">com.clientmanager.util.Log4jInit</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">log4j</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">WEB-INF/classes/log4j.properties</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">load-on-startup</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">0</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">load-on-startup</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet</span><span style="color: #0000ff">&gt;</span></div></font>最后说一点，如果你用struts，而在web.xml中配置了ServletAction，它的启动级别为&lt;load-onstartup&gt;0&lt;/load-on-startup&gt;，那么我们的这个类的的启动级别不能低于它，否则可能会出现找不到路径的问题。<img src ="http://www.blogjava.net/DreamAngel/aggbug/370031.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamAngel/" target="_blank">飞翔天使</a> 2012-02-15 16:03 <a href="http://www.blogjava.net/DreamAngel/archive/2012/02/15/370031.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>log4j:ERROR Failed to rename错误解决办法</title><link>http://www.blogjava.net/DreamAngel/archive/2011/11/10/363400.html</link><dc:creator>飞翔天使</dc:creator><author>飞翔天使</author><pubDate>Thu, 10 Nov 2011 03:48:00 GMT</pubDate><guid>http://www.blogjava.net/DreamAngel/archive/2011/11/10/363400.html</guid><wfw:comment>http://www.blogjava.net/DreamAngel/comments/363400.html</wfw:comment><comments>http://www.blogjava.net/DreamAngel/archive/2011/11/10/363400.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamAngel/comments/commentRss/363400.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamAngel/services/trackbacks/363400.html</trackback:ping><description><![CDATA[<strong><font face="Verdana">引起log4j:ERROR Failed to rename的原因</font><br /></strong>根据Log4J的配置文件，使用LOG4J的DailyRollingFileAppender.java实现每隔一段时间记录一次日志文件，但LOG4J在对原文件改名时，总是提示log4j:ERROR Failed to rename的错误，究其原因，主要是还有进程在使用原来的LOG文件，而通过分析LOG4J的源码，发现LOG4J是采用RENAME的方式对原来的LOG文件改名再生成新文件。<br /><br /><strong>引起log4j:ERROR Failed to rename的条件<br /></strong>通常都是在配置文件采用Java代码 
<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">log4j.appender.A1</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.DailyRollingFileAppender</span></div>或者&nbsp; 
<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">log4j.appender.A1</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.RollingFileAppender</span></div>的情况下遇到"异常"提示。<br /><br /><strong>和异常相关的log4j源代码<br /></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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">File&nbsp;file&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(fileName);<br /></span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;result&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;file.renameTo(target);<br /></span><span style="color: #0000ff">if</span><span style="color: #000000">(result)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;LogLog.debug(fileName&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;-&gt;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;scheduledFilename);<br />}&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;LogLog.error(</span><span style="color: #000000">"</span><span style="color: #000000">Failed&nbsp;to&nbsp;rename&nbsp;[</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">fileName</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">]&nbsp;to&nbsp;[</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">scheduledFilename</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">].</span><span style="color: #000000">"</span><span style="color: #000000">);<br />}</span></div>File类的renameTo方法的作用是：&#8220;改名或者移动文件作用；在同一个目录下renameTo是改名，在不同目录下是移动&#8221;，所以在对一个被其他线程所锁定的文件进行改名时，肯定是会报错的。<br /><br /><strong>解决办法<br /></strong>修改log4j的源代码, 将 
<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;result&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;file.renameTo(target);</span></div>改为<br />
<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;result&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;copy(file,&nbsp;target);</span></div>然后再添加copy()方法。 
<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000">/**</span><span style="color: #008000">&nbsp;&nbsp;<br />*&nbsp;Copies&nbsp;src&nbsp;file&nbsp;to&nbsp;dst&nbsp;file.&nbsp;If&nbsp;the&nbsp;dst&nbsp;file&nbsp;does&nbsp;not&nbsp;exist,&nbsp;it&nbsp;is&nbsp;&nbsp;<br />*&nbsp;created.8KB&nbsp;cache&nbsp;&nbsp;<br />*&nbsp;&nbsp;&nbsp;<br />*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;src&nbsp;&nbsp;<br />*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;dst&nbsp;&nbsp;<br />*&nbsp;</span><span style="color: #808080">@throws</span><span style="color: #008000">&nbsp;IOException&nbsp;&nbsp;<br /></span><span style="color: #008000">*/</span><span style="color: #000000">&nbsp;&nbsp;<br /></span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;copy(File&nbsp;src,&nbsp;File&nbsp;dst)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;IOException&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;in&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileInputStream(src);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream&nbsp;out&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileOutputStream(dst);&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Transfer&nbsp;bytes&nbsp;from&nbsp;in&nbsp;to&nbsp;out&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;buf&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[</span><span style="color: #000000">8192</span><span style="color: #000000">];&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;len;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;((len&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;in.read(buf))&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.write(buf,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;len);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in.close();&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.close();&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(FileNotFoundException&nbsp;e)&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LogLog.error(</span><span style="color: #000000">"</span><span style="color: #000000">源文件不存在,或者目标文件无法被识别.</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(IOException&nbsp;e)&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LogLog.error(</span><span style="color: #000000">"</span><span style="color: #000000">文件读写错误.</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</span></div><br /><strong>附件：<a href="/Files/DreamAngel/DailyRollingFileAppender.zip">DailyRollingFileAppender.zip</a></strong><img src ="http://www.blogjava.net/DreamAngel/aggbug/363400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamAngel/" target="_blank">飞翔天使</a> 2011-11-10 11:48 <a href="http://www.blogjava.net/DreamAngel/archive/2011/11/10/363400.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>log4j教程</title><link>http://www.blogjava.net/DreamAngel/archive/2009/02/27/256967.html</link><dc:creator>飞翔天使</dc:creator><author>飞翔天使</author><pubDate>Fri, 27 Feb 2009 03:16:00 GMT</pubDate><guid>http://www.blogjava.net/DreamAngel/archive/2009/02/27/256967.html</guid><wfw:comment>http://www.blogjava.net/DreamAngel/comments/256967.html</wfw:comment><comments>http://www.blogjava.net/DreamAngel/archive/2009/02/27/256967.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamAngel/comments/commentRss/256967.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamAngel/services/trackbacks/256967.html</trackback:ping><description><![CDATA[<span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font face="Verdana">
<p class="MsoNormal" style="text-indent: 21pt"><br /><strong>log4j.properties的存放位置</strong></font><br />在使用</span><span lang="EN-US">eclipse</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或</span><span lang="EN-US">myeclipse</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">时，无论你写的</span><span lang="EN-US">java</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">程序是处在</span><span lang="EN-US">src</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">目录下的哪个包中，只需要将设置好的</span><span lang="EN-US">log4j.properties</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件放在</span><span lang="EN-US">src</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的根目录即可，这样在运行编译时会自动生成这个文件的备份存入到</span><span lang="EN-US">WEF-INF/classes</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">目录下，或</span><span lang="EN-US">bin</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">目录下。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">注：千万不要放到包内，这样会出现错误提示：</span></p>
<p class="MsoNormal"><span lang="EN-US">log4j:WARN No appenders could be found for logger (aa.Hello).</span></p>
<p class="MsoNormal"><span lang="EN-US">log4j:WARN Please initialize the log4j system properly.</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">其中</span><span lang="EN-US">Hello</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是</span><span lang="EN-US">java</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件名，而</span><span lang="EN-US">aa</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是文件所在的目录。
<hr />
<strong>log4j常用输出格式<br /></strong></p>
<p>%c&nbsp; 列出logger名字空间的全称，如加上{&lt;层数&gt;}表示出从最内层算起的指定层数的名字空间<br />%X&nbsp; 按MDC（Mapped Diagnostic Context,线程映射表）输出日志。通常用于多个客户端连接同一台服务器，方便服务器区分是那个客户端访问留下来的日志。<br />%p&nbsp; 日志信息级别<br />%d&nbsp; %d{&lt;日期格式&gt;}:日志信息产生时间,使用ISO8601定义的日期格式<br />%C&nbsp; 日志信息所在地（全限类名）<br />%m&nbsp; 产生的日志具体信息<br />%n&nbsp; 输出日志信息换行<br />%F　显示调用logger的源文件名<br />%l&nbsp; 输出日志事件的发生位置，包括类目名、发生的线程，以及在代码中的行数<br />%L&nbsp; 显示调用logger的代码行<br />%M&nbsp; 显示调用logger的方法名<br />%r&nbsp; 显示从程序启动时到记录该条日志时已经经过的毫秒数<br />%t&nbsp; 输出产生该日志事件的线程名<br />%%　显示一个&nbsp;</span></p> <img src ="http://www.blogjava.net/DreamAngel/aggbug/256967.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamAngel/" target="_blank">飞翔天使</a> 2009-02-27 11:16 <a href="http://www.blogjava.net/DreamAngel/archive/2009/02/27/256967.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>