ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>免费a级毛片在线观看,在线观看国产精品入口,久久99精品久久久久久琪琪http://www.aygfsteel.com/DreamAngel/category/50092.htmlå¦‚æžœä½ å¸Œæœ›æˆåŠŸï¼Œä»¥æ’å¿ƒäØ“è‰¯å‹åQŒä»¥¾léªŒä¸ºå‚è°‹ï¼Œä»¥å°å¿ƒäØ“å…„å¼ŸåQŒä»¥å¸Œæœ›ä¸ºå“¨å…üc€?/description>zh-cnWed, 15 Feb 2012 12:05:59 GMTWed, 15 Feb 2012 12:05:59 GMT60Log4j中利用相对èµ\å¾?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/DreamAngel/archive/2012/02/15/370031.html</guid><wfw:comment>http://www.aygfsteel.com/DreamAngel/comments/370031.html</wfw:comment><comments>http://www.aygfsteel.com/DreamAngel/archive/2012/02/15/370031.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/DreamAngel/comments/commentRss/370031.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/DreamAngel/services/trackbacks/370031.html</trackback:ping><description><![CDATA[¾~ºçœæƒ…åŞ下我们只能在log4j.properties中搭配绝对èµ\径。这么一来,我们在系¾lŸéƒ¨¾|ŒÓ€çŽ¯å¢ƒç§»æ¤ç­‰çŽ¯èŠ‚ž®×ƒ¼šå¸¦æ¥å¾ˆå¤§çš„不便,必须ž®†èµ\径改来改厅R€‚因而,我们要利用下面的措施实现log4j.properties中的相对路径ã€?br />log4j.propertiesæ–‡äšg配置如下åQ?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] - <%m>%n<br />log4j.appender.Rlogfile.File=${webRoot}/logs/log.log<br />log4j.appender.Rlogfile.MaxFileSize=2048KB<br />log4j.appender.Rlogfile.MaxBackupIndex=10<br />˜q™é‡ŒåQŒæˆ‘们ä‹Éç”?{webRoot}来取得应用èµ\径,webRoot是个变量。我们是从哪里取得的值呢åQŸæ˜¯ä»Žæˆ‘们自å·Þqš„¾cÖM¸­åQŒå› æ­¤å¿…™åÕd†™˜q™ä¸ª¾c…R€? <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"> com.clientmanager.util;<br /><br /></span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.servlet.ServletConfig;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.servlet.ServletException;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.servlet.http.HttpServlet;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.log4j.PropertyConfigurator;<br /><br /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> Log4jInit </span><span style="color: #0000ff">extends</span><span style="color: #000000"> HttpServlet {<br /><br />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> init(ServletConfig config) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> ServletException {<br />        String prefix </span><span style="color: #000000">=</span><span style="color: #000000"> config.getServletContext().getRealPath(</span><span style="color: #000000">"</span><span style="color: #000000">/</span><span style="color: #000000">"</span><span style="color: #000000">); </span><span style="color: #008000">//</span><span style="color: #008000">获取当前路径</span><span style="color: #008000"><br /></span><span style="color: #000000">        String file </span><span style="color: #000000">=</span><span style="color: #000000"> 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˜q™ä¸ªæ–‡äšg</span><span style="color: #008000"><br /></span><span style="color: #000000">        System.setProperty(</span><span style="color: #000000">"</span><span style="color: #000000">webRoot</span><span style="color: #000000">"</span><span style="color: #000000">, prefix); </span><span style="color: #008000">//</span><span style="color: #008000">log4j.propertiesæ–‡äšg中的变量是在˜q™é‡Œè®„¡½®çš?/span><span style="color: #008000"><br /></span><span style="color: #000000">        </span><span style="color: #0000ff">if</span><span style="color: #000000"> (file </span><span style="color: #000000">!=</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">) {<br />            PropertyConfigurator.configure(prefix </span><span style="color: #000000">+</span><span style="color: #000000"> file);<br />        }<br />    }<br />}</span></div><font face="Verdana">web.xml加蝲˜q™ä¸ª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"><</span><span style="color: #800000">servlet</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> </span><span style="color: #0000ff"><</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">></span><span style="color: #000000">log4j-init</span><span style="color: #0000ff"></</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">></span><span style="color: #000000"><br />   </span><span style="color: #0000ff"><</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">></span><span style="color: #000000">com.clientmanager.util.Log4jInit</span><span style="color: #0000ff"></</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">></span><span style="color: #000000"><br />     </span><span style="color: #0000ff"><</span><span style="color: #800000">init-param</span><span style="color: #0000ff">></span><span style="color: #000000"><br />       </span><span style="color: #0000ff"><</span><span style="color: #800000">param-name</span><span style="color: #0000ff">></span><span style="color: #000000">log4j</span><span style="color: #0000ff"></</span><span style="color: #800000">param-name</span><span style="color: #0000ff">></span><span style="color: #000000"><br />     </span><span style="color: #0000ff"><</span><span style="color: #800000">param-value</span><span style="color: #0000ff">></span><span style="color: #000000">WEB-INF/classes/log4j.properties</span><span style="color: #0000ff"></</span><span style="color: #800000">param-value</span><span style="color: #0000ff">></span><span style="color: #000000"><br />    </span><span style="color: #0000ff"></</span><span style="color: #800000">init-param</span><span style="color: #0000ff">></span><span style="color: #000000"><br />    </span><span style="color: #0000ff"><</span><span style="color: #800000">load-on-startup</span><span style="color: #0000ff">></span><span style="color: #000000">0</span><span style="color: #0000ff"></</span><span style="color: #800000">load-on-startup</span><span style="color: #0000ff">></span><span style="color: #000000"><br /></span><span style="color: #0000ff"></</span><span style="color: #800000">servlet</span><span style="color: #0000ff">></span></div></font>最后说一点,如果你用strutsåQŒè€Œåœ¨web.xml中配¾|®äº†ServletActionåQŒå®ƒçš„启动çñ”åˆ«äØ“<load-onstartup>0</load-on-startup>åQŒé‚£ä¹ˆæˆ‘们的˜q™ä¸ª¾cȝš„的启动çñ”别不能低于它åQŒå¦åˆ™å¯èƒ½ä¼šå‡ºçŽ°æ‰¾ä¸åˆ°èµ\径的问题ã€?img src ="http://www.aygfsteel.com/DreamAngel/aggbug/370031.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/DreamAngel/" target="_blank">飞翔天ä‹É</a> 2012-02-15 16:03 <a href="http://www.aygfsteel.com/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错误解决办法http://www.aygfsteel.com/DreamAngel/archive/2011/11/10/363400.html飞翔天ä‹É飞翔天ä‹ÉThu, 10 Nov 2011 03:48:00 GMThttp://www.aygfsteel.com/DreamAngel/archive/2011/11/10/363400.htmlhttp://www.aygfsteel.com/DreamAngel/comments/363400.htmlhttp://www.aygfsteel.com/DreamAngel/archive/2011/11/10/363400.html#Feedback0http://www.aygfsteel.com/DreamAngel/comments/commentRss/363400.htmlhttp://www.aygfsteel.com/DreamAngel/services/trackbacks/363400.html引è“vlog4j:ERROR Failed to rename的原å›?/font>
æ ÒŽ®Log4J的配¾|®æ–‡ä»Óž¼Œä½¿ç”¨LOG4Jçš„DailyRollingFileAppender.java实现每隔一ŒD‰|—¶é—´è®°å½•一‹Æ¡æ—¥å¿—æ–‡ä»Óž¼Œä½†LOG4J在对原文件改名时åQŒæ€ÀL˜¯æç¤ºlog4j:ERROR Failed to rename的错误,½I¶å…¶åŽŸå› åQŒä¸»è¦æ˜¯˜q˜æœ‰˜q›ç¨‹åœ¨ä‹É用原来的LOGæ–‡äšgåQŒè€Œé€šè¿‡åˆ†æžLOG4J的源码,发现LOG4J是采用RENAME的方式对原来的LOGæ–‡äšg改名再生成新文äšgã€?br />
引è“vlog4j:ERROR Failed to rename的条ä»?br />通常都是在配¾|®æ–‡ä»‰™‡‡ç”¨Java代码
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
或�nbsp;
log4j.appender.A1=org.apache.log4j.RollingFileAppender
的情况下遇到"异常"提示�br />
和异常相关的log4j源代�br />
File file = new File(fileName);
boolean result = file.renameTo(target);
if(result) {
    LogLog.debug(fileName 
+" -> "+ scheduledFilename);
else {
    LogLog.error(
"Failed to rename ["+fileName+"] to ["+scheduledFilename+"].");
}
File¾cȝš„renameToæ–ÒŽ³•的作用是åQ?#8220;改名或者移动文件作用;在同一个目录下renameTo是改名,在不同目录下是移åŠ?#8221;åQŒæ‰€ä»¥åœ¨å¯¹ä¸€ä¸ªè¢«å…¶ä»–¾U¿ç¨‹æ‰€é”å®šçš„æ–‡ä»¶è¿›è¡Œæ”¹åæ—¶åQŒè‚¯å®šæ˜¯ä¼šæŠ¥é”™çš„ã€?br />
解决办法
修改log4j的源代码, ž®?
boolean result = file.renameTo(target);
æ”¹äØ“
boolean result = copy(file, target);
然后再添加copy()æ–ÒŽ³•ã€?
/**  
* Copies src file to dst file. If the dst file does not exist, it is  
* created.8KB cache  
*   
@param src  
@param dst  
@throws IOException  
*/  
boolean copy(File src, File dst) throws IOException {
    
try {
        InputStream in 
= new FileInputStream(src);

        OutputStream out 
= new FileOutputStream(dst);   

                
// Transfer bytes from in to out   
                byte[] buf = new byte[8192];   
                
int len;   
                
while ((len = in.read(buf)) > 0) {   
            out.write(buf, 
0, len);   
                }
                in.close();   
                out.close();   
                
return true;   
            } 
catch (FileNotFoundException e) {   
                    LogLog.error(
"源文件不存在,或者目标文件无法被识别." );   
                    
return false;   
            } 
catch (IOException e) {   
                LogLog.error(
"æ–‡äšgè¯Õd†™é”™è¯¯.");   
                
return false;   
    }
}

附äšgåQ?a href="/Files/DreamAngel/DailyRollingFileAppender.zip">DailyRollingFileAppender.zip

]]>
log4j教程http://www.aygfsteel.com/DreamAngel/archive/2009/02/27/256967.html飞翔天ä‹É飞翔天ä‹ÉFri, 27 Feb 2009 03:16:00 GMThttp://www.aygfsteel.com/DreamAngel/archive/2009/02/27/256967.htmlhttp://www.aygfsteel.com/DreamAngel/comments/256967.htmlhttp://www.aygfsteel.com/DreamAngel/archive/2009/02/27/256967.html#Feedback0http://www.aygfsteel.com/DreamAngel/comments/commentRss/256967.htmlhttp://www.aygfsteel.com/DreamAngel/services/trackbacks/256967.html


log4j.properties的存放位¾|?/strong>

在ä‹Éç”?/span>eclipseæˆ?/span>myeclipseæ—Óž¼Œæ— è®ºä½ å†™çš?/span>java½E‹åºæ˜¯å¤„åœ?/span>src目录下的哪个包中åQŒåªéœ€è¦å°†è®„¡½®å¥½çš„log4j.propertiesæ–‡äšg攑֜¨src的根目录卛_¯åQŒè¿™æ ·åœ¨˜qè¡Œ¾~–译时会自动生成˜q™ä¸ªæ–‡äšg的备份存入到WEF-INF/classes目录下,æˆ?/span>bin目录下ã€?/span>

注:千万不要攑ֈ°åŒ…内åQŒè¿™æ ·ä¼šå‡ºçŽ°é”™è¯¯æç¤ºåQ?/span>

log4j:WARN No appenders could be found for logger (aa.Hello).

log4j:WARN Please initialize the log4j system properly.

其中Helloæ˜?/span>javaæ–‡äšg名,è€?/span>aa是文件所在的目录ã€?


log4j常用输出格式

%c  列出logger名字½Iºé—´çš„å…¨¿UŽÍ¼Œå¦‚加上{<层数>}表示å‡ÞZ»Žæœ€å†…层½Ž—è“v的指定层数的名字½Iºé—´
%X  按MDCåQˆMapped Diagnostic Context,¾U¿ç¨‹æ˜ å°„表)输出日志。通常用于多个客户端连接同一台服务器åQŒæ–¹ä¾¿æœåŠ¡å™¨åŒºåˆ†æ˜¯é‚£ä¸ªå®¢æˆïL«¯è®‰K—®ç•™ä¸‹æ¥çš„æ—¥å¿—ã€?br />%p  日志信息¾U§åˆ«
%d  %d{<日期格式>}:日志信息产生旉™—´,使用ISO8601定义的日期格å¼?br />%C  日志信息所在地åQˆå…¨é™ç±»åï¼‰
%m  产生的日志具体信æ?br />%n  输出日志信息换行
%F 昄¡¤ºè°ƒç”¨logger的源文äšgå?br />%l  输出日志事äšg的发生位¾|®ï¼ŒåŒ…括¾cȝ›®åã€å‘生的¾U¿ç¨‹åQŒä»¥åŠåœ¨ä»£ç ä¸­çš„行数
%L  昄¡¤ºè°ƒç”¨logger的代码行
%M  昄¡¤ºè°ƒç”¨logger的方法名
%r  昄¡¤ºä»Žç¨‹åºå¯åŠ¨æ—¶åˆ°è®°å½•è¯¥æ¡æ—¥å¿—æ—¶å·²ç»¾lè¿‡çš„æ¯«¿U’æ•°
%t  输出产生该日志事件的¾U¿ç¨‹å?br />%% 昄¡¤ºä¸€ä¸?nbsp;



]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ÂÐÄÏÏØ| ±±´¨| ³¤ÄþÏØ| ¿¦À®Ç߯ì| Îå¼ÒÇþÊÐ| ÓÚ¶¼ÏØ| ½­´ïÏØ| ÃÀ¹ÃÏØ| ¶«ÐËÊÐ| ÁúÑÒÊÐ| »¢ÁÖÊÐ| ÇåÔ­| ƽ¹ûÏØ| Î÷°²ÊÐ| ½­ÒõÊÐ| ´óÐÂÏØ| ÎâÖÒÊÐ| ÂÌ´ºÏØ| ÏÌÑôÊÐ| ²ý½­| ÂÞ³Ç| ºªµ¦ÊÐ| ÓàÇìÏØ| ÎͰ²ÏØ| ÎÚÀ¼ºÆÌØÊÐ| Õ´»¯ÏØ| ÔÆºÍÏØ| ±±´¨| Î×ÏªÏØ| ºôºÍºÆÌØÊÐ| ºÏ´¨ÊÐ| ɳƺ°ÓÇø| ÕÄÆÖÏØ| ¹Å½»ÊÐ| ÎÄÉ½ÏØ| À¶É½ÏØ| Ç­ÄÏ| ¾©É½ÏØ| ·½ÕýÏØ| µü²¿ÏØ| ÉñÅ©¼ÜÁÖÇø|