﻿<?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-季浩的Blog-随笔分类-J2EE</title><link>http://www.blogjava.net/jht/category/18830.html</link><description>努力</description><language>zh-cn</language><lastBuildDate>Sat, 29 Sep 2007 12:30:28 GMT</lastBuildDate><pubDate>Sat, 29 Sep 2007 12:30:28 GMT</pubDate><ttl>60</ttl><item><title>log4j 配置导致输出两行相同结果的问题</title><link>http://www.blogjava.net/jht/archive/2007/09/28/148964.html</link><dc:creator>jht</dc:creator><author>jht</author><pubDate>Fri, 28 Sep 2007 01:57:00 GMT</pubDate><guid>http://www.blogjava.net/jht/archive/2007/09/28/148964.html</guid><wfw:comment>http://www.blogjava.net/jht/comments/148964.html</wfw:comment><comments>http://www.blogjava.net/jht/archive/2007/09/28/148964.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jht/comments/commentRss/148964.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jht/services/trackbacks/148964.html</trackback:ping><description><![CDATA[首先看这一段简单的log4j配置<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">log4j.logger.cn</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">debug</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">stdout<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.logger.cn.heapstack</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">debug</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">stdout<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.stdout</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">org.apache.log4j.ConsoleAppender<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />log4j.appender.stdout.layout</span><span style="COLOR: #000000">=</span><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 </span><span style="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">%t</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000"> %-5p %c line.%L: %m%n</span></div>这个配置导致日志文件中输出两行相同的结果<br /><br />原因是这样的，第二行的logger继承自第一行的logger，两个logger的apperder都是指向stdout<br />Appender的输出是独立的，所以导致了我们使用如下代码获得logger的时候会输出两行<br /><br />public static Logger logger = Logger.getLogger(cn.heapstack.demopkg.Main.class);<br /><br /><br />知道这个原因之后解决办法也就简单了，即我们不需要定义重复的appder，<br />可以把第二行最后的stdout去掉，或者注释掉第二行，如果输出级别相同的话<img src ="http://www.blogjava.net/jht/aggbug/148964.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jht/" target="_blank">jht</a> 2007-09-28 09:57 <a href="http://www.blogjava.net/jht/archive/2007/09/28/148964.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>