﻿<?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-扭曲的铅笔-文章分类-JAVA</title><link>http://www.blogjava.net/naruke/category/22873.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 31 May 2007 21:59:33 GMT</lastBuildDate><pubDate>Thu, 31 May 2007 21:59:33 GMT</pubDate><ttl>60</ttl><item><title>Log4j学习</title><link>http://www.blogjava.net/naruke/articles/120606.html</link><dc:creator>扭曲的铅笔</dc:creator><author>扭曲的铅笔</author><pubDate>Tue, 29 May 2007 01:39:00 GMT</pubDate><guid>http://www.blogjava.net/naruke/articles/120606.html</guid><wfw:comment>http://www.blogjava.net/naruke/comments/120606.html</wfw:comment><comments>http://www.blogjava.net/naruke/articles/120606.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/naruke/comments/commentRss/120606.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/naruke/services/trackbacks/120606.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center><span style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"></span><span lang=EN-US style="FONT-SIZE: 14pt"><o:p></o:p></span>&nbsp;</p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><strong style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt; mso-bidi-font-family: Arial">一、<span lang=EN-US>Log4j</span>概念：<span lang=EN-US><o:p></o:p></span></span></strong></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt; mso-bidi-font-family: Arial">Log4j</span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt; mso-bidi-font-family: Arial">中有三个主要的组件，它们分别是<span lang=EN-US>Logger</span>、<span lang=EN-US>Appender</span>和<span lang=EN-US>Layout</span>，<span lang=EN-US>Log4j </span>允许开发人员定义多个<span lang=EN-US>Logger</span>，每个<span lang=EN-US>Logger</span>拥有自己的名字，<span lang=EN-US>Logger</span>之间通过名字来表明隶属关系。有一个<span lang=EN-US>Logger</span>称为<span lang=EN-US>Root</span>，它永远 存在，且不能通过名字检索或引用，可以通过<span lang=EN-US>Logger.getRootLogger()</span>方法获得，其它<span lang=EN-US>Logger</span>通过<span lang=EN-US> Logger.getLogger(String name)</span>方法。<span lang=EN-US><br>&nbsp;&nbsp; Appender</span>则是用来指明将所有的<span lang=EN-US>log</span>信息存放到什么地方，<span lang=EN-US>Log4j</span>中支持多种<span lang=EN-US>appender</span>，如<span lang=EN-US> console</span>、<span lang=EN-US>files</span>、<span lang=EN-US>GUI components</span>、<span lang=EN-US>NT Event Loggers</span>等，一个<span lang=EN-US>Logger</span>可以拥有多个<span lang=EN-US>Appender</span>，也就是你既可以将<span lang=EN-US>Log</span>信息输出到屏幕，同时存储到一个文件中。<span lang=EN-US><br>&nbsp;&nbsp; Layout</span>的作用是控制<span lang=EN-US>Log</span>信息的输出方式，也就是格式化输出的信息。<span lang=EN-US><br>&nbsp;&nbsp; Log4j</span>中将要输出的<span lang=EN-US>Log</span>信息定义了<span lang=EN-US>5</span>种级别，依次为<span lang=EN-US>DEBUG</span>、<span lang=EN-US>INFO</span>、<span lang=EN-US>WARN</span>、<span lang=EN-US>ERROR</span>和<span lang=EN-US>FATAL</span>，当输出时，只有级别高过配置中规定的级别的信息才能真正的输出，这样就很方便的来配置不同情况下要输出的内容，而不需要更改代码<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt; mso-bidi-font-family: Arial"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><strong style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt; mso-bidi-font-family: Arial">二、<span lang=EN-US>Log4j</span>的配置文件<span lang=EN-US><o:p></o:p></span></span></strong></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt; mso-bidi-font-family: Arial"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt; mso-bidi-font-family: Arial">Log4j</span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt; mso-bidi-font-family: Arial">提供的<span lang=EN-US>appender</span>有以下几种：<span lang=EN-US><br>&nbsp;&nbsp;org.apache.log4j.ConsoleAppender</span>（控制台）<span lang=EN-US><br>&nbsp;&nbsp;org.apache.log4j.FileAppender</span>（文件）<span lang=EN-US><br>&nbsp;&nbsp;org.apache.log4j.DailyRollingFileAppender</span>（每天产生一个日志文件）<span lang=EN-US><br>&nbsp;&nbsp;org.apache.log4j.RollingFileAppender</span>（文件大小到达指定尺寸的时候产生新文件）<span lang=EN-US><br>&nbsp;&nbsp;org.apache.log4j.WriterAppender</span>（将日志信息以流格式发送到任意指定的地方）<span lang=EN-US><br></span>配置日志信息的格式（布局），其语法为：<span lang=EN-US><br>&nbsp;&nbsp;log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class<br>&nbsp;&nbsp;log4j.appender.appenderName.layout.option1 = value1<br>&nbsp;&nbsp;....<br>&nbsp;&nbsp;log4j.appender.appenderName.layout.option = valueN<br>Log4j</span>提供的<span lang=EN-US>layout</span>有以下几种：<span lang=EN-US><br>&nbsp;&nbsp;org.apache.log4j.HTMLLayout</span>（以<span lang=EN-US>HTML</span>表格形式布局），<span lang=EN-US><br>&nbsp;&nbsp;org.apache.log4j.PatternLayout</span>（可以灵活地指定布局模式），<span lang=EN-US><br>&nbsp;&nbsp;org.apache.log4j.SimpleLayout</span>（包含日志信息的级别和信息字符串），<span lang=EN-US><br>&nbsp;&nbsp;org.apache.log4j.TTCCLayout</span>（包含日志产生的时间、线程、类别等等信息）<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt; mso-bidi-font-family: Arial"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt; mso-bidi-font-family: Arial">配置文件有两种格式分别是<span lang=EN-US>xml</span>和<span lang=EN-US>property</span>，我只学习了<span lang=EN-US>property</span>格式<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt; mso-bidi-font-family: Arial"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #00b400; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">#root </span><span style="FONT-SIZE: 10pt; COLOR: #00b400; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-ansi-language: PT-BR">格式</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #00b400; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">log4j.rootLogger=[level,appenderName,appenderName....]</span><span style="FONT-SIZE: 10pt; COLOR: #00b400; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">，可以有多个<span lang=EN-US>appender</span></span><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=PT-BR style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-ansi-language: PT-BR">log4j.rootLogger</span><span lang=PT-BR style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-ansi-language: PT-BR">=</span><span lang=PT-BR style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-ansi-language: PT-BR">INFO,A1,R</span><span lang=PT-BR style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-ansi-language: PT-BR"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=PT-BR style="FONT-SIZE: 10pt; COLOR: #00b400; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-ansi-language: PT-BR">#A1</span><span style="FONT-SIZE: 10pt; COLOR: #00b400; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-ansi-language: PT-BR">输出方式为控制台，<span lang=PT-BR>layout</span>格式可以是自订的</span><span lang=PT-BR style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-ansi-language: PT-BR"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">log4j.appender.A1</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">=</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">org.apache.log4j.ConsoleAppender</span><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">log4j.appender.A1.layout</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">=</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">org.apache.log4j.PatternLayout</span><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">log4j.appender.A1.layout.ConversionPattern</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">=</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=PT-BR style="FONT-SIZE: 10pt; COLOR: #00b400; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-ansi-language: PT-BR">#R1</span><span style="FONT-SIZE: 10pt; COLOR: #00b400; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-ansi-language: PT-BR">输出方式为文件大小到达<span lang=PT-BR>500KB</span>的时候产生新文件，<span lang=PT-BR>layout</span>格式可以是自订的</span><span lang=PT-BR style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-ansi-language: PT-BR"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">log4j.appender.R</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">=</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">org.apache.log4j.RollingFileAppender</span><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">log4j.appender.R.File</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">=</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">petstorlog4j.txt</span><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">log4j.appender.R.MaxFileSize</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">=</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">500KB</span><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">log4j.appender.R.MaxBackupIndex</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">=</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">1</span><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">log4j.appender.R.layout</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">=</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">org.apache.log4j.PatternLayout</span><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">log4j.appender.R.layout.ConversionPattern</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">=</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><strong style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt; mso-bidi-font-family: Arial">三、在<span lang=EN-US>WEB</span>应用系统中注册<span lang=EN-US>Log4j</span>（如果系统本身加入<span lang=EN-US>spring</span>就不需要这一步骤）<span lang=EN-US><o:p></o:p></span></span></strong></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt; mso-bidi-font-family: Arial">创建一个初始化<span lang=EN-US>log4j</span>的<span lang=EN-US>servlet</span>如下创建一个名为&#8220;<span lang=EN-US>log4jInit</span>&#8221;，并在<span lang=EN-US>init</span>（）方法里添加<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt; mso-bidi-font-family: Arial"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp; </span>public void init() {<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>String prefix =<span style="mso-spacerun: yes">&nbsp; </span>getServletContext().getRealPath("/");<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 41pt; TEXT-INDENT: -20pt; mso-para-margin-left: 2.0gd; mso-char-indent-count: -2.0"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #33cc33; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>//</span><span style="FONT-SIZE: 10pt; COLOR: #33cc33; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial">取得<span lang=EN-US>web.xml</span>里<span lang=EN-US>sevelt</span>传递的参数<span lang=EN-US>props</span>的值，该参数指定<span lang=EN-US>log4j.properties</span>文<span lang=EN-US>//</span>件的路径<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>String file = getInitParameter("props");<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// if the log4j-init-file is not set, then no point in trying<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println("................log4j start");<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(file != null) {<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp; </span>PropertyConfigurator.configure(prefix+file);<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp; </span>}<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial">在<span lang=EN-US>WEB.xml</span>里的配置如下<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><span style="mso-spacerun: yes">&nbsp; </span></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&lt;</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #3f7f7f; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">servlet</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&gt;</span><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&lt;</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #3f7f7f; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">servlet-name</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&gt;</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">log4jInit</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&lt;/</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #3f7f7f; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">servlet-name</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&gt;</span><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&lt;</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #3f7f7f; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">servlet-class</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&gt;</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">com.petstor.servlet.log4jInit</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&lt;/</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #3f7f7f; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">servlet-class</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&gt;</span><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style="mso-tab-count: 1"></span></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&lt;</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #3f7f7f; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">init-param</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&gt;</span><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&lt;</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #3f7f7f; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">param-name</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&gt;</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">props</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&lt;/</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #3f7f7f; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">param-name</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&gt;</span><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&lt;</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #3f7f7f; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">param-value</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&gt;</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">log4j.properties</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&lt;/</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #3f7f7f; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">param-value</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&gt;</span><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&lt;/</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #3f7f7f; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">init-param</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #3366ff; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&lt;!—</span><span style="FONT-SIZE: 10pt; COLOR: #3366ff; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">在服务器启动是，加载该<span lang=EN-US>servlet</span>；并且只加载一次<span lang=EN-US>--&gt;<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><span style="mso-spacerun: yes">&nbsp; </span></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&lt;/</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: #3f7f7f; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">servlet</span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">&gt;</span><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><strong style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial">四、在程序中使用<span lang=EN-US>Log4j<o:p></o:p></span></span></strong></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial">要在自己的类中使用<span lang=EN-US>Log4j</span>，首先声明一个静态变量<span lang=EN-US>Logger logger=Logger.getLog("classname")</span>；在使用之前，用<span lang=EN-US>PropertyConfigurator.configure ("</span>配置文件<span lang=EN-US>")</span>配置一下，现在就可以使用了，用法如下：<span lang=EN-US>logger.debug("debug message")</span>或者<span lang=EN-US>logger.info("info message")</span>，看下面一个小例子：<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span>import com.foo.Bar;<br>&nbsp;&nbsp;&nbsp;&nbsp;import org.apache.log4j.Logger;<br>&nbsp;&nbsp;&nbsp;&nbsp;import org.apache.log4j.PropertyConfigurator;<br>&nbsp;&nbsp;&nbsp;&nbsp;public class MyApp {<br>&nbsp;&nbsp;&nbsp;&nbsp;static Logger logger = Logger.getLogger(MyApp.class.getName());<br>&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String[] args) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// BasicConfigurator replaced with PropertyConfigurator.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PropertyConfigurator.configure(args[0]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.info("Entering application.");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bar bar = new Bar();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bar.doIt();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.info("Exiting application.");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial"><o:p></o:p></span>&nbsp;</p>
<img src ="http://www.blogjava.net/naruke/aggbug/120606.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/naruke/" target="_blank">扭曲的铅笔</a> 2007-05-29 09:39 <a href="http://www.blogjava.net/naruke/articles/120606.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>