ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>成人香蕉社区,欧美3p视频在线观看,毛片免费在线http://www.aygfsteel.com/asdtiang/category/43543.html交流学习(f¨¤n)JAVA zh-cnTue, 12 Jan 2010 09:55:35 GMTTue, 12 Jan 2010 09:55:35 GMT60java log4j使用http://www.aygfsteel.com/asdtiang/archive/2010/01/12/309181.htmlasdtiangasdtiangTue, 12 Jan 2010 09:22:00 GMThttp://www.aygfsteel.com/asdtiang/archive/2010/01/12/309181.htmlhttp://www.aygfsteel.com/asdtiang/comments/309181.htmlhttp://www.aygfsteel.com/asdtiang/archive/2010/01/12/309181.html#Feedback0http://www.aygfsteel.com/asdtiang/comments/commentRss/309181.htmlhttp://www.aygfsteel.com/asdtiang/services/trackbacks/309181.html
1、定义配¾|®æ–‡ä»?

首先使用配置文äšgž®†ä‹É我们的应用程序更加灵‹z»é…¾|®log日志输出方式包括输出优先¾U§ã€è¾“出目的地、输出格式。Log4j支持两种配置文äšg格式åQŒä¸€¿Uæ˜¯ XML格式的文ä»Óž¼Œä¸€¿Uæ˜¯Javaç‰ÒŽ(gu¨©)€§æ–‡ä»¶log4j.propertiesåQˆé”®=å€û|¼‰ã€‚下面将介绍使用log4j.propertiesæ–‡äšgä½œäØ“é…ç½®æ–? ä»¶çš„æ–ÒŽ(gu¨©)³•åQ?

①配¾|®æ ¹LoggeråQŒå…¶è¯­æ³•为:0

log4j.rootLogger = [ level ] , appenderName, appenderName, …

其中åQŒlevel 是日志记录的优先¾U§ï¼Œåˆ†äØ“OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的çñ”别。Log4j廸™®®åªä‹É用四个çñ”别,ä¼? å…ˆçñ”从高åˆîC½Žåˆ†åˆ«æ˜¯ERROR、WARN、INFO、DEBUG。通过在这里定义的¾U§åˆ«åQŒæ?zh¨¨n)¨å¯ä»¥æŽ§åˆ¶åˆ°åº”用程序中相应¾U§åˆ«çš„æ—¥å¿—信息的开兟뀂比如在˜q™é‡Œå®? 义了INFO¾U§åˆ«åQŒåˆ™åº”用½E‹åºä¸­æ‰€æœ‰DEBUG¾U§åˆ«çš„æ—¥å¿—信息将不被打印出来ã€? appenderNamež®±æ˜¯æŒ‡å®šæ—¥å¿—信息输出到哪个地斏V€‚可同时指定多个输出目的地ã€?

②配¾|®æ—¥å¿—信息输出目的地AppenderåQŒå…¶è¯­æ³•为:

log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1

log4j.appender.appenderName.option = valueN

其中åQŒLog4j提供的appender有以下几¿Uï¼š
org.apache.log4j.ConsoleAppenderåQˆæŽ§åˆ¶å°åQ‰ï¼Œ
org.apache.log4j.FileAppenderåQˆæ–‡ä»Óž¼‰åQ?
org.apache.log4j.DailyRollingFileAppenderåQˆæ¯å¤©äñ”生一个日志文ä»Óž¼‰åQ?
org.apache.log4j.RollingFileAppenderåQˆæ–‡ä»¶å¤§ž®åˆ°è¾¾æŒ‡å®šå°ºå¯¸çš„æ—¶å€™äñ”生一个新的文ä»Óž¼‰åQ?
org.apache.log4j.WriterAppenderåQˆå°†æ—¥å¿—信息以流格式发送到ä»ÀL„æŒ‡å®šçš„地方)

③配¾|®æ—¥å¿—信息的格式åQˆå¸ƒå±€åQ‰ï¼Œå…¶è¯­æ³•䨓åQ?

log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1

log4j.appender.appenderName.layout.option = valueN

其中åQŒLog4j提供的layout有以下几¿Uï¼š
org.apache.log4j.HTMLLayoutåQˆä»¥HTML表格形式布局åQ‰ï¼Œ
org.apache.log4j.PatternLayoutåQˆå¯ä»¥çµ‹zÕdœ°æŒ‡å®šå¸ƒå±€æ¨¡å¼åQ‰ï¼Œ
org.apache.log4j.SimpleLayoutåQˆåŒ…含日志信息的¾U§åˆ«å’Œä¿¡æ¯å­—½W¦ä¸²åQ‰ï¼Œ
org.apache.log4j.TTCCLayoutåQˆåŒ…含日志äñ”生的旉™—´ã€çº¿½E‹ã€ç±»åˆ«ç­‰½{‰ä¿¡æ¯ï¼‰

Log4J采用¾cÖM¼¼C语言中的printf函数的打印格式格式化日志信息åQŒæ‰“印参数如下: %m 输出代码中指定的消息

%p 输出优先¾U§ï¼Œå³DEBUGåQŒINFOåQŒW(xu¨¦)ARNåQŒERRORåQŒFATAL
%r 输出自应用启动到输出该log信息耗费的毫¿U’æ•°
%c 输出所属的¾cȝ›®åQŒé€šå¸¸ž®±æ˜¯æ‰€åœ¨ç±»çš„å…¨å?
%t 输出产生该日志事件的¾U¿ç¨‹å?
%n 输出一个回车换行符åQŒW(xu¨¦)indowsòq›_°ä¸?#8220;\r\n”åQŒUnixòq›_°ä¸?#8220;\n”
%d 输出日志旉™—´ç‚¹çš„æ—¥æœŸæˆ–æ—¶é—ß_¼Œé»˜è®¤æ ¼å¼ä¸ºISO8601åQŒä¹Ÿå¯ä»¥åœ¨å…¶åŽæŒ‡å®šæ ¼å¼ï¼Œæ¯”如åQ?d{yyy MMM dd HH:mm:ss,SSS}åQŒè¾“出类ä¼û|¼š2002òq?0æœ?8æ—?22åQ?0åQ?8åQ?21
%l 输出日志事äšg的发生位¾|®ï¼ŒåŒ…括¾cȝ›®åã€å‘生的¾U¿ç¨‹åQŒä»¥åŠåœ¨ä»£ç ä¸­çš„行数。ä‹D例:Testlog4.main(TestLog4.java:10)

2、在代码中ä‹É用Log4j

①得到记录器

使用Log4jåQŒç¬¬ä¸€æ­¥å°±æ˜¯èŽ·å–æ—¥å¿—è®°å½•å™¨åQŒè¿™ä¸ªè®°å½•器ž®†è´Ÿè´£æŽ§åˆ¶æ—¥å¿—信息。其语法为:

public static Logger getLogger( String name)

通过指定的名字获得记录器åQŒå¦‚æžœå¿…è¦çš„è¯ï¼Œåˆ™äØ“˜q™ä¸ªåå­—创徏一个新的记录器。Name一般取本类的名字,比如åQ?

static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () )

②读取配¾|®æ–‡ä»?

当获得了日志记录器之后,½W¬äºŒæ­¥å°†é…ç½®Log4j环境åQŒå…¶è¯­æ³•为:

BasicConfigurator.configure ()åQ?自动快速地使用¾~ºçœLog4j环境ã€?
PropertyConfigurator.configure ( String configFilename) åQšè¯»å–ä‹É用Java的特性文件编写的配置文äšgã€?

例:PropertyConfigurator.configure(".\\src\\log4j.properties")
DOMConfigurator.configure ( String filename ) åQšè¯»å–XML形式的配¾|®æ–‡ä»¶ã€?

③插入记录信息(格式化日志信息)

当上两个必要步骤执行完毕åQŒå°±å¯è½»æ‘Öœ°ä½¿ç”¨ä¸åŒä¼˜å…ˆ¾U§åˆ«çš„æ—¥å¿—记录语句插入到æ‚(zh¨¨n)¨æƒ³è®°å½•日志的ä“Q何地方,其语法如下:

Logger.debug ( Object message ) ;
Logger.info ( Object message ) ;
Logger.warn ( Object message ) ;
Logger.error ( Object message ) ;

log4j范例½E‹åº

下面ž®†ä‹É用一个最½Ž€å•的范例½E‹åºæ¥è¿›ä¸€æ­¥è¯´æ˜Žlog4jçš„ä‹É用方法。程序代码如下:



import org.apache.log4j.*;



public class LogTest {





static Logger logger = Logger.getLogger(LogTest.class.getName());



public static void main(String[] args) {



PropertyConfigurator.configure ( “.\\src\log4j.properties”)åQ?

logger.debug("Debug ...");



logger.info("Info ...");



logger.warn("Warn ...");



logger.error("Error ...");



}

}

½E‹åºè¯´æ˜ŽåQ?

â‘?static Logger logger = Logger.getLogger(LogTest.class.getName());ž®±æ˜¯åˆ›å¾ä¸€ä¸ªå±žäºŽLogTest¾cȝš„Logger对象åQŒåˆ›å»ºæ—¶è¦? 告知Logger你当前的Class是什么ã€?

â‘?PropertyConfigurator.configure ( “log4j.properties”)ž®±æ˜¯è¯´ä‹É用当前工½E‹ç›®å½•下的srcæ–‡äšg夹中的log4j.propertiesæ–‡äšgä½œäØ“é…ç½®æ–‡äšg。若ž®? log4j.properties攑֜¨å·¥ç¨‹æ ¹ç›®å½•下也可不写此句åQŒç¨‹åºä¼šè‡ªåŠ¨æ‰‘Öˆ°é…ç½®æ–‡äšgã€?

â‘? logger.debugž®±æ˜¯è¾“出debug的信息,logger.infož®±æ˜¯è¾“出提示信息åQŒlogger.warnž®±æ˜¯æ˜„¡¤ºè­¦å‘Šä¿? 息,logger.errorž®±æ˜¯æ˜„¡¤ºé”™è¯¯ä¿¡æ¯ã€?



下面是配¾|®æ–‡ä»¶log4j.properties的内容:

log4j.rootCategory=DEBUG, stdoutåQŒR

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender

log4j.appender.R.File=log.txt

log4j.appender.R.MaxFileSize=100KB

log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss} %-5p %c - %m%n

½E‹åºè¯´æ˜ŽåQ?

â‘?log4j.rootCategory=DEBUG, stdoutåQŒR

ž®±æ˜¯è¯´æˆ‘要显½Cºæ‰€æœ‰ä¼˜å…ˆæƒ½{‰æ–¼å’Œé«˜äºŽDebug的信息ã€?
"stdout"åQ?#8221;R”表示我定义了两个输出ç«?随便什么名字都å¥?ã€?

②下面的三行说stdout输出端其实是标准输出ConsoleåQŒä¹Ÿž®±æ˜¯å±å¹•。输出的格式是PatternLayout。è{换方式是%5p (%F:%L) - %m%nåQŒå³å‰äº”格用来显½CÞZ¼˜å…ˆæƒåQŒå†æ˜„¡¤ºå½“前的文件名åQŒåŠ å½“å‰çš„è¡Œæ•°ã€‚æœ€åŽæ˜¯logger.debug()或logger.info()æˆ? logger.warn()或logger.error()里的信息ã€?n表示回èžR½Iø™¡Œã€?

③再加上下面六行则log信息不光昄¡¤ºåœ¨å±òq•上åQŒè€Œä¸”ž®†è¢«ä¿å­˜åœ¨ä¸€ä¸ªå«"log.txt"的文仉™‡ŒåQŒæ–‡ä»¶æœ€å¤§äØ“100KB。如果文件大ž®è¶…˜q?00KBåQ? æ–‡äšg会被备䆾æˆ?log.txt.1"åQŒæ–°çš?log.txt"¾l§ç®‹è®°å½•log信息ã€?

接下来我们可以改变log4j.propertiesåQŒè€Œä¸éœ€é‡æ–°¾~–译ž®±å¯ä»¥æŽ§åˆ¶log信息是否昄¡¤ºã€log信息的输出端¾cÕdž‹ã€è¾“出方式、输出格式,½{? ½{‰ã€‚ä‹D例如下:

①在log4j.propertiesæ–‡äšg里把"log4j.rootCategory=DEBUG,stdout,R"改写 æˆ?log4j.rootCategory=OFF, stdout,R"åQŒè¿™æ äh‰€æœ‰çš„log信息都不会显½CÞZº†åQ›è§£å†³äº†æœ¬æ–‡å¼€å§‹æå‡ºçš„问题ã€?
②在log4j.propertiesæ–‡äšg里把"log4j.rootCategory=DEBUG,stdout,R"改写 æˆ?log4j.rootCategory=INFO, stdout,R"åQŒè¿™æ ·åªæ˜„¡¤ºINFO, WARN, ERRORçš„log信息åQŒè€ŒDEBUG信息不会被显½Cºï¼›



在web½E‹åºä¸­ä‹É用log4j注意问题

1ã€?nbsp;   ç”׃ºŽjsp或servlet在执行状态时没有当前路径概念åQŒæ‰€æœ‰ä‹É用PropertyConfigurator.configureåQˆStringåQ‰è¯­å? 找log4j.propertiesæ–‡äšg时要¾l™å‡ºç›¸å¯¹äºŽå½“前jsp或servletçš„èµ\径è{化成ä¸ÞZ¸€ä¸ªç»å¯¹çš„æ–‡äšg¾pȝ»Ÿè·¯å¾„。方法是使用 servletcontext.getrealpath(string)语句。例åQ?

//得到当前jsp路径

String prefix = getServletContext().getRealPath("/");

//è¯Õd–log4j.properties

PropertyConfigurator.configure(prefix+"\\WEB-INF\\log4j.properties");

2、相应的log4j.properties讄¡½®æŸä¸ªå±žæ€§æ—¶ä¹Ÿè¦åœ¨ç¨‹åºä¸­è®„¡½®¾lå¯¹è·¯å¾„。例åQ?

log4j.appender.R.File属性设¾|®æ—¥å¿—文件存放位¾|®ã€‚我们可以用è¯Õd†™.properties配置文äšg的方法进行灵‹z»è®¾¾|®ã€?


asdtiang 2010-01-12 17:22 发表评论
]]>
JAVA 日志¾pȝ»Ÿ½Ž€ä»?-è½?/title><link>http://www.aygfsteel.com/asdtiang/archive/2010/01/12/309180.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Tue, 12 Jan 2010 09:21:00 GMT</pubDate><guid>http://www.aygfsteel.com/asdtiang/archive/2010/01/12/309180.html</guid><wfw:comment>http://www.aygfsteel.com/asdtiang/comments/309180.html</wfw:comment><comments>http://www.aygfsteel.com/asdtiang/archive/2010/01/12/309180.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/asdtiang/comments/commentRss/309180.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/asdtiang/services/trackbacks/309180.html</trackback:ping><description><![CDATA[<p style="text-indent: 24pt;" class="0"><span style="font-size: 12pt;"><span>æ—? 志,源于logåQŒæœ‰èˆªæ“v日志的意思。指记录‹¹·å‘˜è®°å½•每天的行½E‹ï¼Œç”Ÿæ´»åŠå‘生的事äšg。在软äšg开发领域,用来监控代码中变量变化,跟踪 代码˜qè¡Œçš„轨˜q¹ï¼Œåœ¨å¼€å‘环境中担当调试器作用,向控制台或文件输å‡ÞZ¿¡æ¯ã€?/span></span></p> <p style="text-indent: 24pt;" class="0"> </p> <p style="text-indent: 24pt;" class="0"><span style="font-size: medium;"><span><span style="font-size: 12pt;"><span>几乎所有的软äšg开发语­a€åQˆåã^収ͼ‰éƒ½æœ‰è‡ªå·±çš„æ—¥å¿—ç³»¾lŸï¼Œ<span id="wmqeeuq" class="hilite1">java</span>åQ?netåQŒrubyåQŒphp½{‰ã€‚在<span id="wmqeeuq" class="hilite1">java</span>é¢? 域,存在大量的日志组ä»Óž¼Œ</span></span><span><a _fcksavedurl="http://www.open-open.com/open50229.htm"><span style="font-size: 12pt; color: rgb(0, 0, 255); text-decoration: underline;" class="15">open-open</span></a></span><span style="font-size: 12pt;"><span>æ”?录了21个日志组件ã€?/span></span></span></span></p> <p style="text-indent: 24pt;" class="0"><span style="font-size: 12pt;"><span>ä»? 功能上讲åQŒè¿™äº›å¯ä»¥åˆ†ä¸ÞZ¸‰¾c»ï¼Œä¸€æ˜¯æ—¥å¿—å·¥å…ïL(f¨¥ng)±»åQŒå®ƒå®žçŽ°äº†æ—¥å¿—çš„è®°å½•åQŒæ ¼å¼åŒ–å’Œçñ”别的划分åQŒä»£è¡¨äØ“ logbackåQŒsimplelog。二是日志系¾lŸï¼Œæä¾›äº†å®Œæ•´çš„æ¡†æž¶åŠŸèƒ½òq¶å®žçŽîCº†æ—¥å¿—è®°å½•ã€‚ä»£è¡¨äØ“julåQˆjdk提供的日志框 æžÓž¼‰åQŒlog4jåQˆapache开源项目)。三是抽象整合类åQŒå®ƒæä¾›äº†ä¸€¾l„接口,完成日志功能åQŒé€šè¿‡åŒ…装其他日志工具或系¾lŸæ¥å·¥ä½œjclåQˆapacheå¼€ 源组ä»Óž¼‰åQŒslf4jã€?/span></span></p> <p style="text-indent: 24pt;" class="0"> </p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"><span style="font-size: medium;"><span><span style="font-size: 12pt;"><span>从历史上è®ÔŒ¼Œlog4j出现最早,</span></span><span style="font-size: 12pt;">Ceki Gülcü<span>是其创造者。自java1.4开始,jdk提供äº?span class="hilite1">java</span>.util.logging ¾cÕdº“åQŒæä¾›äº†ä¸€ä¸ªå®Œæ•´çš„æ—¥å¿—框架åQŒåœ¨è®¾è®¡ä¸Šè¦æ¯”log4j要更清晰ã€?˜q™ä¸ªæ—¶å€™ï¼Œé™¤æ­¤ä¹‹å¤–åQŒè¿˜æœ‰ä¸€äº›å…¶ä»–日志组ä»Óž¼Œ<span id="wmqeeuq" class="hilite1">java</span>领域从来不缺ž®‘轮子,æ€ÀL˜¯æœ‰äh在发明轮 子,轮子多了åQŒå°±ä¼šäñ”ç”ŸæØœä¹±ï¼Œž®×ƒ¼šæœ‰äh站出来,要一¾lŸæ±Ÿæ¹–,于是åQŒjclåQŒapache一个开源的日志¾l„äšg诞生了,它提供了一¾l„日志系¾lŸçš„æŽ¥å£åQŒé€šè¿‡å¯? log4jåQŒjulå’Œsimplelog˜q›è¡ŒåŒ…装åQŒæä¾›æ—¥å¿—åŠŸèƒ½ã€‚è¿™æ øP¼Œå¼€å‘的时候,只需要ä‹É用jclåQŒé€šè¿‡é…ç½®åQŒçµ‹z»é€‰æ‹©åº•å±‚å®žçŽ°ã€‚è¿™æ øP¼Œå¯¹äºŽå¼€å‘ähå‘? 来说åQŒå¼€å‘æ›´½Ž€å•了些。看èµäh¥ä¸€åˆ‡å¤ªòq³äº†åQŒå¯Ceki Gülcüè®¤äØ“åQŒåº”该有一个更好的日志框架。log4j¾lè¿‡˜q™ä¹ˆä¹…的发展åQŒå·²¾læˆä¸ÞZº†ä¸€ä¸ªå·¨äººï¼Œäº? 伤痕累篏åQŒä»Žå¤–面看,¾lå…¸åQŒåº„重,强壮åQŒä»Žå†…部看,却有着一æ ÒŽ(gu¨©) ¹çš„飞¾U¿ï¼ˆThinkPadåQ‰ï¼Œå……æ»¡äº†ä»£ç çš„åå‘³é“ã€‚æˆ–è®æ€»–没有勇气来改造这个巨人,¼›Õd¼€ä¹? 许是最好的选择åQŒäºŽæ˜¯ï¼Œå‡ºæ¥åQŒåˆ›å»ÞZº†slf4jåQŒæ¥å–代jclåQŒåˆ›å»ÞZº†logbackåQŒæ¥å–代log4j。目前,log4jå’Œjul应用最为广 泛,slf4jä½œäØ“æ–°å…´çš„æŠ½è±¡å±‚åQŒæ•´åˆlogbackåQŒä»¥å…¶ç®€‹zï¼Œå¿«é€Ÿï¼Œæ­£è¢«­‘Šæ¥­‘Šå¤šçš„é¡¶¾U§é¡¹ç›®ä‹É用ã€?/span></span></span></span></p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"> </p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"><span style="font-size: 12pt;"><span>代表日志¾l„äšg½Ž€è¦ä»‹¾lã€?/span></span></p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"><span style="font-size: medium;"><span><span style="font-size: 12pt;">Log4j<span>åQŒåŽ†å²æ?zh¨¨n) ä¹…,应用òq¿æ³›åQŒè¢«¿UÀL¤åˆ°å¤š¿Uè¯­­a€åŠåã^収ͼŒåŠŸèƒ½å¼ºå¤§åQŒåœ¨ä¼—多的日志框æž?中,仍占据着ä¸Õd¯¼åœîC½ã€?/span></span></span></span></p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"><span style="font-size: medium;"><span><span style="font-size: 12pt;">Jul<span>åQŒjdk提供的日志框æžÓž¼Œè®¾è®¡¾_¾è‰¯åQŒå’Œjdk紧密¾l“合åQŒæŽ§åˆ¶çµ‹z»ï¼Œä½¿ç”¨½Ž€å•ã€?/span></span></span></span></p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"><span style="font-size: medium;"><span><span style="font-size: 12pt;">Jcl<span>åQŒæä¾›äº†æ—¥å¿—的抽象层åQŒå¯ä»¥æ•´åˆå¤š¿Uå®žçŽ°ã€‚ä½†æœ‰classloader问题ã€?/span></span></span></span></p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"><span style="font-size: medium;"><span><span style="font-size: 12pt;">Slf4j<span>åQŒæä¾›äº†jcl的超集,避免了classloader问题ã€?/span></span></span></span></p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"><span style="font-size: medium;"><span><span style="font-size: 12pt;">Logback<span>åQŒå¯é ï¼Œé€šç”¨åQŒå¿«é€Ÿï¼Œç‰|´»çš?span class="hilite1">java</span>æ—? å¿—å·¥å…øP¼ˆå®˜æ–¹æè¿°åQ‰ã€?/span></span></span></span></p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"> </p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"><span style="font-size: 12pt;"><span>™å¹ç›®é€‰æ‹©æ€è€ƒã€?/span></span></p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"><span style="font-size: 12pt;"><span>如果是单一的项目,如桌面应用,é‡? 用julåQŒå…é…ç½®åQŒæŽ§åˆ¶çµ‹z…R€?/span></span></p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"><span style="font-size: 12pt;"><span>如果是web开发,宜采ç”? log4jåQŒå› ä¸ºç³»¾lŸå·²¾læœ‰äº†å¾ˆå¤šçš„配置文äšgåQŒä¸åœ¨ä¹Žå¤šä¸€ä¸ªï¼Œè€Œä¸”log4j可以è„Þq¦»ä»ÖM½•¾l„äšgåQŒä¸åƒjulåQŒå’Œjvm紧密¾l“合在一赗÷€?/span></span></p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"><span style="font-size: 12pt;"><span>如果是多™å¹ç›®æ•´åˆå¼€å‘,宜采ç”? slf4jåQŒä¸€æ˜¯å®ƒå¯ä»¥æ•´åˆå…¶ä»–遗留日志¾l„äšgåQŒäºŒæ˜¯å…¶æä¾›çš„æŠ½è±¡å±‚åQŒäØ“ž®†æ¥çš„开发提供了灉|´»æ€§ã€?/span></span></p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"> </p> <p style="margin-top: 5pt; text-align: justify;" class="0"><span style="font-size: 12pt;"><span>参考资料:</span></span></p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"><span style="font-size: medium;"><span><span style="font-size: 12pt;">1åQ?/span><span style="font-size: 12pt;">IBM developerworks<span>å¯? log4j的介¾lã€?nbsp;</span></span><span><a _fcksavedurl="http://www.ibm.com/developerworks/cn/java/l-log4j/index.html"><span style="font-size: 12pt; color: rgb(0, 0, 255); text-decoration: underline;" class="15"><span>链接</span></span></a></span></span></span></p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"><span style="font-size: medium;"><span><span style="font-size: 12pt;">2åQ?/span><span style="font-size: 12pt;"><span id="wmqeeuq" class="hilite1">Java</span><span>å¼€ 源日志组件列表ã€?/span></span><span><a _fcksavedurl="http://www.open-open.com/open50229.htm"><span style="font-size: 12pt; color: rgb(0, 0, 255); text-decoration: underline;" class="15"><span>链接</span></span></a></span></span></span></p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"><span style="font-size: medium;"><span><span style="font-size: 12pt;">3åQ?/span><span style="font-size: 12pt;">Slf4j<span>å®?方网站ã€?/span></span><span><a _fcksavedurl="http://www.slf4j.org/"><span style="font-size: 12pt; color: rgb(0, 0, 255); text-decoration: underline;" class="15"><span>链接</span></span></a></span></span></span></p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"><span style="font-size: medium;"><span><span style="font-size: 12pt;">4åQ?/span><span style="font-size: 12pt;">Logback<span>å®?方网站ã€?/span></span><span><a _fcksavedurl="http://logback.qos.ch/"><span style="font-size: 12pt; color: rgb(0, 0, 255); text-decoration: underline;" class="15"><span>链接</span></span></a></span></span></span></p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"><span style="font-size: medium;"><span><span style="font-size: 12pt;">5åQ?/span><span style="font-size: 12pt;">Log4j<span>å®?方网站ã€?/span></span><span><a _fcksavedurl="http://logging.apache.org/"><span style="font-size: 12pt; color: rgb(0, 0, 255); text-decoration: underline;" class="15"><span>链接</span></span></a></span></span></span></p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"><span style="font-size: medium;"><span><span style="font-size: 12pt;">6åQ?/span><span style="font-size: 12pt;">Jcl<span>å®?方网站ã€?/span></span><span><a _fcksavedurl="http://commons.apache.org/logging/"><span style="font-size: 12pt; color: rgb(0, 0, 255); text-decoration: underline;" class="15"><span>链接</span></span></a></span></span></span></p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"><span style="font-size: medium;"><span><span style="font-size: 12pt;">7åQ?/span><span style="font-size: 12pt;">Sun<span>å®?方网站ã€?/span></span><span><a _fcksavedurl="http://www.sun.com/"><span style="font-size: 12pt; color: rgb(0, 0, 255); text-decoration: underline;" class="15"><span>链接</span></span></a></span></span></span></p> <p style="margin-top: 5pt; text-indent: 24pt; text-align: justify;" class="0"><span style="font-size: medium;"><span><span style="font-size: 12pt;">8åQ?/span><span style="font-size: 12pt;"><span>一 个jcl的中文说明ã€?/span></span><span><a _fcksavedurl="http://hedong.3322.org/archives/000316.html"><span style="font-size: 12pt; color: rgb(0, 0, 255); text-decoration: underline;" class="15"><span>链接</span></span></a></span></span></span></p> <img src ="http://www.aygfsteel.com/asdtiang/aggbug/309180.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/asdtiang/" target="_blank">asdtiang</a> 2010-01-12 17:21 <a href="http://www.aygfsteel.com/asdtiang/archive/2010/01/12/309180.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> Ö÷Õ¾Ö©Öë³ØÄ£°å£º <a href="http://" target="_blank">½ðºþÏØ</a>| <a href="http://" target="_blank">ÉÏÓÝÊÐ</a>| <a href="http://" target="_blank">ºÓÄÏÊ¡</a>| <a href="http://" target="_blank">¶ÀÉ½ÏØ</a>| <a href="http://" target="_blank">¶¼À¼ÏØ</a>| <a href="http://" target="_blank">ÐÞÎÄÏØ</a>| <a href="http://" target="_blank">Ì«±£ÊÐ</a>| <a href="http://" target="_blank">ÁéèµÏØ</a>| <a href="http://" target="_blank">Ëà±±</a>| <a href="http://" target="_blank">ÓÀÐÞÏØ</a>| <a href="http://" target="_blank">ƽÌÁÏØ</a>| <a href="http://" target="_blank">¾®ÑÐÏØ</a>| <a href="http://" target="_blank">Å®ÐÔ</a>| <a href="http://" target="_blank">ÎâÇÅÏØ</a>| <a href="http://" target="_blank">ÙñÖÝÊÐ</a>| <a href="http://" target="_blank">±õÖÝÊÐ</a>| <a href="http://" target="_blank">ÖÓÏéÊÐ</a>| <a href="http://" target="_blank">ÂÞ½­ÏØ</a>| <a href="http://" target="_blank">Â¹ÒØÏØ</a>| <a href="http://" target="_blank">ºÓÔ´ÊÐ</a>| <a href="http://" target="_blank">Ó¦³ÇÊÐ</a>| <a href="http://" target="_blank">°²ÏªÏØ</a>| <a href="http://" target="_blank">ÎäÇ¿ÏØ</a>| <a href="http://" target="_blank">²ýÍ¼ÏØ</a>| <a href="http://" target="_blank">³Ç²½</a>| <a href="http://" target="_blank">»ÝË®ÏØ</a>| <a href="http://" target="_blank">Ð˺ÍÏØ</a>| <a href="http://" target="_blank">¿µÆ½ÏØ</a>| <a href="http://" target="_blank">ÓñϪÊÐ</a>| <a href="http://" target="_blank">À³ÎßÊÐ</a>| <a href="http://" target="_blank">²ÊƱ</a>| <a href="http://" target="_blank">ÄÏ»ãÇø</a>| <a href="http://" target="_blank">µ¤½­¿ÚÊÐ</a>| <a href="http://" target="_blank">Õò½­ÊÐ</a>| <a href="http://" target="_blank">ɯ³µÏØ</a>| <a href="http://" target="_blank">ºÍÁúÊÐ</a>| <a href="http://" target="_blank">¸Ú°ÍÏØ</a>| <a href="http://" target="_blank">ÏçÄþÏØ</a>| <a href="http://" target="_blank">»´ÑôÏØ</a>| <a href="http://" target="_blank">ä»Ë®ÏØ</a>| <a href="http://" target="_blank">ÄþÁêÏØ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>