﻿<?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-一步一个脚印-文章分类-log4j</title><link>http://www.blogjava.net/flysky19/category/17552.html</link><description>java之路</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 03:44:21 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 03:44:21 GMT</pubDate><ttl>60</ttl><item><title>成功配置tomcat的log4j日志系统，格式：HTML＋每天以yyyy-mm-dd.log命名的日志文件</title><link>http://www.blogjava.net/flysky19/articles/98414.html</link><dc:creator>不断前进的小乌龟</dc:creator><author>不断前进的小乌龟</author><pubDate>Tue, 06 Feb 2007 11:03:00 GMT</pubDate><guid>http://www.blogjava.net/flysky19/articles/98414.html</guid><wfw:comment>http://www.blogjava.net/flysky19/comments/98414.html</wfw:comment><comments>http://www.blogjava.net/flysky19/articles/98414.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flysky19/comments/commentRss/98414.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flysky19/services/trackbacks/98414.html</trackback:ping><description><![CDATA[
		<br />成功配置tomcat的log4j日志系统，格式：HTML＋每天以yyyy-mm-dd.log命名的日志文件<br />一、引言：<br />    实习单位让用log4j配置webapp的日志系统，要求产生的日志文件是html格式，并且是每天以yyyy-mm-dd日期格式命名的日志文件。<br />    这个曾经让自己费神了一段时间，最近花了两天时间总算配置成功了！不过配置成功的是tomcat的，不是单个webapp的，现把步骤记录下来，晚上再配置webapp的。先写一步一步的操作，后面再讲解一些log4j的关键知识点。<br /><br />二、一步一步配置tomcat log4j日志系统<br /><br />第一步：下载log4j.jar,并把log4j.jar放入$CATALINA_HOME/common/lib.<br />第二步：新建log4j.properties文件，放到$CATALINA_HOME/common/classes/目录下.<br />第三步：写配置文件log4j.properties：<br />#log4j.properties<br /><br />log4j.rootLogger=warn, A1<br /><br />log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender <br />log4j.appender.A1.file=F:/UserWorkSpace/jiangcm/Tomcat 5.0/logs/tomcat_log_<br />log4j.appender.A1.DatePattern=yyyy-MM-dd'.html'<br />log4j.appender.A1.layout=org.apache.log4j.HTMLLayout  <br /><br />log4j.logger.org.apache=warn<br /><br /><br />注解：<br />1）你只需要修改这一行：<br /><br />log4j.appender.R.File=F:/UserWorkSpace/jiangcm/Tomcat 5.0/logs/tomcat_log_<br /><br />将路径修改为你的Tomcat的logs目录，如果你的系统环境配置了CATALINA_HOME环境变量，那么可以使用${catalina.home}/logs/tomcat_log_进行配置即可。<br /><br />2）上面的log4j配置仅记录比较重要的日志（警告warning、错误error、致命错误fatal）到Tomcat的logs目录下的tomcat_log_ 文件中，每天晚上过0点的第一条信息会触发重命名tomcat_log_，将当前日期附加在tomcat_log_ 文件名中，并产生新的tomcat_log_ 文件。<br /><br />3）使用FileAppender可以将log信息输出到文件中，但是如果文件太大了读起来就不方便了。这时就可以使用 DailyRollingAppender。DailyRollingAppender可以把Log信息输出到按照日期来区分的文件中。如上述log4j.properties配置文件就会每天产生一个html文件，每个html文件只记录当天的log信息。<br /><br />4）设置了DailyRollingAppender 以后如果配置项里面设置了文件的最大值,那么应该去掉,否则可能不能产生以天为单位的日志。<br /><br />5）Log4j的org.apache.log4j.DailyRollingFileAppender源码223行<br />scheduledFilename = fileName+sdf.format(new Date(file.lastModified()));<br /><br />也就是说备份的日至文件都是文件名后面加上你所配的DatePattern格式化后的字符串。除非你自己写个appender。<br /><br />6）上述log4j.properties生成的日志文件，名称格式如下：tomcat_log_2007-02-24.html；<br />注意：生成的第一个日志文件格式如下：tomcat_log_，即只是A1.file中设置的名称；生成的第二个日志文件之后的文件命名才会加上所配的DatePattern格式化后的字符串。<br /><br />7）配置DailyRollingFileAppender格式的日志系统，如果要验证生成的日志文件结果，要注意一点，需要关闭tomcat，修改系统日期为第二天的日期，再重启tomcat，这样才能自动生成一个新的日志文件；因为要修改日期才能触发产生新的日志文件。<br /><br /><br />第四步：重启tomcat.<br /><br />ok，现在就已经在tomcat中配置好log4j了。<br /><br />第五步：验证<br /><br />  验证上述配置的log4j日志系统：<br /><br />    利用tomcat自带的web应用程序jsp-examples，现在配置好了日志系统，那么如果在jsp-examples这个web应用程序的.java文件中使用了日志，则IE访问这个web app的jsp文件时，就应该能够自动产生日志文件到配置的路径中。<br /><br />    步骤：<br />    a）进入目录“F:\UserWorkSpace\jiangcm\Tomcat 5.0\webapps\jsp-examples\WEB-INF\classes\dates”；<br />    b）修改JspCalendar.java文件，在这个文件中加上日志的代码，如下所示：<br />package dates;<br /><br />import java.text.DateFormat;<br />import java.util.*;<br />import org.apache.log4j.Logger;<br />import org.apache.log4j.Level;<br />import org.apache.log4j.*;<br /><br /><br />public class JspCalendar {<br />    Calendar  calendar = null;<br />    static Logger logger = Logger.getLogger(JspCalendar.class);<br /><br /><br />    public JspCalendar() {<br />  logger.debug("This is debug.");<br />  logger.info("This is an info.");<br />  logger.warn("This is a warning.");<br />  logger.error("This is an error.");<br />  logger.fatal("This is a fatal error.");<br />  <br />    calendar = Calendar.getInstance();<br />    Date trialTime = new Date();<br />    calendar.setTime(trialTime);<br />    }<br /><br />    public int getYear() {<br />  <br />    return calendar.get(Calendar.YEAR);<br /><br />    }<br />……<br />}<br /><br />注释：<br />加上的代码有两部分，一是构造一个logger对象，一是输出logger信息，如下所示，其他代码没动：<br />static Logger logger = Logger.getLogger(JspCalendar.class);<br /><br />  logger.debug("This is debug.");<br />  logger.info("This is an info.");<br />  logger.warn("This is a warning.");<br />  logger.error("This is an error.");<br />  logger.fatal("This is a fatal error.");<br /><br />    c）重新编译JspCalendar.java；<br />    d）修改日期为2007-02-26；<br />    e）重启tomcat；<br />    f）在IE中输入“http://localhost:8086/jsp-examples/dates/date.jsp”，运行该jsp文件；<br />    g）这时在目录“F:\UserWorkSpace\jiangcm\Tomcat 5.0\logs”下看到了新产生的日志文件：tomcat_log_2007-02-25.html.<br />    <br />    ok！说明日志系统配置成功啦，啦～！！<br /><br />三、遗留问题<br />3.1 上述配置的是tomcat的日志系统，应该是对tomcat下的所有webapp都起作用，现在自己只验证了jsp-examples这个webapp，还没有验证过其他的webapp。<br /><br />3.2 配置的是tomcat的日志系统，输出的应该都只是tomcat的标准输入/输出信息等，感觉webapp的日志信息应该和tomcat的系统日志信息分开，但是应该怎么分开呢？如果对每个webapp单独配置日志系统，那么这些日志内容会输出到tomcat的系统日志中吗？<br /><br />3.3 不需任何配置，tomcat5.0的默认日志目录“F:\UserWorkSpace\jiangcm\Tomcat 5.0\logs”下就有按日期产生的日志文件，文件命名格式如下：localhost_log.2007-02-26.txt，并且这个文件是自动生成的，上述配置在目录“F:\UserWorkSpace\jiangcm\Tomcat 5.0\logs”下生成了tomcat_log_2007-02-25.html文件，并且tomcat本身也自动生成了一个localhost_log.2007-02-26.txt文件，相当于自动生成了两个日志文件。<br />当然这两个日志文件的内容不同，tomcat_log_2007-02-25.html中的内容如下：<br />待贴图<br /><br />而localhost_log.2007-02-26.txt的内容如下：<br />2007-02-26 14:03:21 StandardContext[/balancer]org.apache.webapp.balancer.BalancerFilter: init(): ruleChain: [org.apache.webapp.balancer.RuleChain: [org.apache.webapp.balancer.rules.URLStringMatchRule: Target string: News / Redirect URL: http://www.cnn.com], [org.apache.webapp.balancer.rules.RequestParameterRule: Target param name: paramName / Target param value: paramValue / Redirect URL: http://www.yahoo.com], [org.apache.webapp.balancer.rules.AcceptEverythingRule: Redirect URL: http://jakarta.apache.org]]<br />2007-02-26 14:03:22 StandardContext[/jsp-examples]ContextListener: contextInitialized()<br />2007-02-26 14:03:22 StandardContext[/jsp-examples]SessionListener: contextInitialized()<br />2007-02-26 14:03:22 StandardContext[/servlets-examples]ContextListener: contextInitialized()<br />2007-02-26 14:03:22 StandardContext[/servlets-examples]SessionListener: contextInitialized()<br /><br />感觉就是localhost_log.2007-02-26.txt中是tomcat的系统日志，而omcat_log_2007-02-25.html中是.java中自己写的logger的内容。<br /><br />那么，是不是tomcat5中系统日志就会自动按日生成，不需配置；开发人员如果需要日志系统，那么就在自己的webapp中配置一个，而不需要管tomcat的系统日志了？？？<br /><br />3.4 tomcat_log_2007-02-25.html与localhost_log.2007-02-26.txt内容不同的原因有没有可能是因为：<br />自己的log4j.properties中设置apache的级别是warn：？？<br />log4j.logger.org.apache=warn<br /><br />刚验证了一下，好像没有关系，“log4j.logger.org.apache=warn”这句好像不仅对localhost_log.2007-02-26.txt无影响，而且对tomcat_log_2007-02-25.html的输出也无影响。<br />那么“log4j.logger.org.apache=warn”这句的作用是什么呢？？？<br /><br />3.5 webapp中如何配置日志系统，并且把webapp的日志信息与tomcat自身的系统日志分开？？？<br /><br />四、参考资料：<br />1.我想每一天都产生一个以"yyyy-mm-dd.log"命名日志文件，请问该怎么配置file选项，谢谢了！<br />http://community.csdn.net/Expert/TopicView3.asp?id=4788993<br /><br />2.使用log4j为Tomcat输出日志<br />http://www.chinawin.net/myblog/archives/314-log4jTomcataeoeOE.html<br /><br />1. 如果Tomcat当前正在运行，关闭Tomcat。<br />2. 从Apache的网站下载Commons Logging发行包。<br />3. 将压缩包中的commons-logging.jar解压缩到你Tomcat安装路径的common/lib目录中。<br />4. 从Apache的网站下载Log4j发行包。<br />5. 将压缩包中的log4j-1.2.12.jar解压缩到你Tomcat安装路径的common/lib目录中。<br />6. 在Tomcat安装路径的common/classes 创建log4j的配置文件log4j.properties（配置文件在随后一节）。<br />7. 重起Tomcat <br /><br /><br />3.在Web应用中使用log4j<br />http://www.3doing.net/forums/printpage.asp?BoardID=11&amp;ID=184<br /><br />注意：上面的load-on-startup应设为1，以便在Web容器启动时即装入该Servlet。log4j.properties文件放在根的properties子目录中，也可以把它放在其它目录中。应该把.properties文件集中存放，这样方便管理。<br /><br />4.og4j日志文件路径的配置<br />http://wangluwww.spaces.live.com/blog/<br /><br />解决log4j输出的日志文件的位置的配置问题<br /><br />我一直希望自己的web应用的配置能够简化，最好的方式就是打个包后扔哪都能用，即使非得再做一些配置的话，也希望只是一些连接池的配置信息。这个目标在现在手头的这个项目中也几乎达到了，除了log文件的位置。<br />在log4j的配置文件中对于log输出的路径一向都是使用绝对路径，这样就导致在不同的机器上部署时都得重新定义一下log文件的输出位置。虽说费时不多，可对于我这种宁可少一事，不愿多一事的人来说，总是觉得有点郁闷。<br />踏破铁鞋无觅，得来不费功夫。不经意见看到了一个文档，介绍说log4j的配置文件支持windows的环境变量，格式类似velocity:${env}，ok，问题解决：<br />一般来说我们会将一些初始化的信息放到web.xml中，以便在系统启动时就运行。循此思路，将log文件的位置放到webapp下面的任意处，如webapp/WEB-INF/conf/logs下面，则可以在log4j.properties文件中做如下定义：<br />log4j.appender.R.File=${webappHome}/WEB-INF/conf/logs/sysout.log<br />其中的${webappHome}即是通过System.setProperty("webappHome", webappHome);实现的，此操作可通过一初始的servlet进行，具体方法略。<br /><br />5. Log4j优化<br />http://www.3doing.net/forums/printpage.asp?BoardID=11&amp;ID=184<br /><br />有多少人用Log4j的时候会在每一个Debug/Info之前加一个判断？<br /><br />可能很多人都说了，这有什么关系，我在运行的时候是把Log Level设置成Error的。<br /><br />那么请看下面这个代码：<br /><br />String result;<br />...<br />...<br />...<br />logger.debug(”result is” + result );<br /><br />再看看这个代码：<br /><br />String result;<br />...<br />...<br />...<br />if(logger.isDebugEnabled())<br />{<br />       logger.debug(”result is” + result );<br />}<br /><br /><br />把Log Level设置成ERROR,运行结果又区别吗？没有！！<br />程序的性能有区别吗？区别大了!!!<br /><br />因为什么呢？<br /><br />虽然第一段代码也不产生Log输出，但是debug()里面的字符串变量是实例化了，明白了吗？<br /><br />这个就是为什么很多人抱怨Log4j占用很大CPU时间的原因了，尤其是在大循环的时候。<br /><br />赶快在你的程序中加上这样的判断条件吧。<br /><br /><br /><br /><br /><br /><br /><img src ="http://www.blogjava.net/flysky19/aggbug/98414.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flysky19/" target="_blank">不断前进的小乌龟</a> 2007-02-06 19:03 <a href="http://www.blogjava.net/flysky19/articles/98414.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>log4j配置日志系统成功</title><link>http://www.blogjava.net/flysky19/articles/98131.html</link><dc:creator>不断前进的小乌龟</dc:creator><author>不断前进的小乌龟</author><pubDate>Mon, 05 Feb 2007 14:33:00 GMT</pubDate><guid>http://www.blogjava.net/flysky19/articles/98131.html</guid><wfw:comment>http://www.blogjava.net/flysky19/comments/98131.html</wfw:comment><comments>http://www.blogjava.net/flysky19/articles/98131.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flysky19/comments/commentRss/98131.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flysky19/services/trackbacks/98131.html</trackback:ping><description><![CDATA[1.引言：<br />1）两次周会fengy都报告说要建一个日志系统，用log4j来配置，一直好奇，log4j是什么东东，有何用处<br /><br />呢？今天柳暗花明了：<br />《log4j相比System.out的优势》（自己blog中的文章）<br />    Log4j就是帮助开发人员进行日志输出管理的API类库。它最重要的特点就可以配置文件灵活的设置日<br /><br />志信息的优先级、日志信息的输出目的地以及日志信息的输出格式。<br /><br />    Log4j除了可以记录程序运行日志信息外还有一重要的功能就是用来显示调试信息。<br /><br />    程序员经常会遇到脱离java ide环境调试程序的情况，这时大多数人会选择使用System.out.println<br /><br />语句输出某个变量值的方法进行调试。这样会带来一个非常麻烦的问题：一旦哪天程序员决定不要显示这<br /><br />些System.out.println的东西了就只能一行行的把这些垃圾语句注释掉。若哪天又需调试变量值，则只能<br /><br />再一行行去掉这些注释恢复System.out.println语句。<br /><br />    使用log4j可以很好的处理类似情况。<br /><br />2）log4j——一个让我发愁了一段时间的东东：<br />    12月份的时候fengy让配置log4j，自己折腾了一个星期都没弄出来，并且很不明白到底是哪个环<br /><br />节出问题了。因为当时对相对路径，常用接口等都不是很了解，wangwm配出来后，还是不知道自己的为什<br /><br />么跑不起来。<br />    现在回头想想，一直没有进展，是因为（a）没有java.io的知识；（b）没有java相对路径，绝<br /><br />对路径的知识；（c）根本不理解要完成配置，必须完成哪些工作。<br />    当时弄不出来，一直就停留在.java文件中的“PropertyConfigurator.configure<br /><br />(myfile.getPath());”这行代码里了，当时无论怎么都读不到log4j.properties文件，想了很多办法，<br /><br />包括查如何读取属性文件，如果用相对路径读取属性文件，等等。但这些都是雾里看花，本质没弄清楚，<br /><br />查再多的细节都不至于事。<br />    现在总算对log4j的配置有了一点认识了！<br /><br />2.首先分清在各个环境下配置log4j应完成什么事情：<br /><b>1）java工程环境：</b><br />jdk1.4之后就集成了日志功能，D:\Program Files\Java\jre1.5.0_04\lib目录下有logging.properties<br /><br />文件，如果要使用日志，直接使用或者修改这个logging.properties属性文件就可以了！<br /><br /><b>2）在tomcat中用log4j配置日志系统：</b><br />a）<br />第一步：下载log4j.jar,并把log4j.jar放入$CATALINA_HOME/common/lib.<br />第二步：写配置文件log4j.properties：<br />#log4j.properties<br /><br />log4j.rootLogger=warn, A1,warnlog<br />log4j.appender.A1=org.apache.log4j.ConsoleAppender<br />log4j.appender.A1.layout=org.apache.log4j.PatternLayout<br /># Print the date in ISO 8601 format<br />log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n<br /><br />log4j.appender.warnlog=org.apache.log4j.FileAppender  <br />log4j.appender.warnlog.MaxFileSize=50000KB   <br />log4j.appender.warnlog.MaxBackupIndex=0   <br />log4j.appender.warnlog.file=F:/UserWorkSpace/jiangcm/logs/warn.html  <br />log4j.appender.warnlog.layout=org.apache.log4j.HTMLLayout  <br />log4j.appender.warnlog.layout.ConversionPattern=%d   %X   %-5p     %m%n   <br /><br />log4j.logger.org.apache=warn<br />第三步：在目录“F:/UserWorkSpace/jiangcm/logs”下新建warn.html文件；<br />第四步：把该log4j.properties文件放到$CATALINA_HOME/common/classes/目录下.<br />第五步：重启tomcat.<br />ok，现在就已经在tomcat中配置好log4j了。<br /><br />b）如何使用？——在.java文件中得到一个Logger对象，然后就可以直接输出日志了。如下例子所示：<br />//Bar.java<br />package com.foo;<br />import org.apache.log4j.Logger;<br /><br />public class Bar {<br />static Logger logger = Logger.getLogger(Bar.class);<br />public void doIt() {<br />logger.debug("there is a debug...");<br />logger.info("there is a info...");<br />logger.warn("there is a warning...");<br />}<br />}<br /><br />ok!也就是说在tomcat中配置，只需要把log4j.jar和log4j.properties分别放到$CATALINA_HOME/common/<br /><br />的lib和classes下就ok了！不需要再做别的设置，在.java中直接使用即可。<br /><br /><b>3）在tomcat的webapp中配置log4j：也就是配置单个的webapp。</b><br />这个就有点麻烦了！因为在整个tomcat中配置，tomcat会自动读入log4j.properties；但是在webapp中需<br /><br />要写一个Servlet，初始化log4j,并且在web.xml中设置给servlet为tomcat启动时也自动启动。<br /><br />这种方法自己还没有实验成功，不过看过wangwm配置成功了。<br /><br />不过大致的步骤都是一样的，大概有以下几步吧：<br />第一步：下载log4j.jar,并把log4j.jar放入webappname/WEB-INF/classes/lib.<br />第二步：写配置文件log4j.properties：<br />注：<br />解决log4j输出的日志文件的位置的配置问题 <br />http://wangluwww.spaces.live.com/blog/<br />我一直希望自己的web应用的配置能够简化，最好的方式就是打个包后扔哪都能用，即使非得再做一些配<br /><br />置的话，也希望只是一些连接池的配置信息。这个目标在现在手头的这个项目中也几乎达到了，除了log<br /><br />文件的位置。<br />在log4j的配置文件中对于log输出的路径一向都是使用绝对路径，这样就导致在不同的机器上部署时都得<br /><br />重新定义一下log文件的输出位置。虽说费时不多，可对于我这种宁可少一事，不愿多一事的人来说，总<br /><br />是觉得有点郁闷。<br />踏破铁鞋无觅，得来不费功夫。不经意见看到了一个文档，介绍说log4j的配置文件支持windows的环境变<br /><br />量，格式类似velocity:${env}，ok，问题解决： <br />一般来说我们会将一些初始化的信息放到web.xml中，以便在系统启动时就运行。循此思路，将log文件的<br /><br />位置放到webapp下面的任意处，如webapp/WEB-INF/conf/logs下面，则可以在log4j.properties文件中做<br /><br />如下定义：<br />log4j.appender.R.File=${webappHome}/WEB-INF/conf/logs/sysout.log<br />其中的${webappHome}即是通过System.setProperty("webappHome", webappHome);实现的，此操作可通过<br /><br />一初始的servlet进行，具体方法略。<br /><br /><br />第四步：把该log4j.properties文件放到WEB-INF/classes/目录下.<br />第五步：写一个初始化的servlet；<br />第六步：在web.xml中配置该servlet，并设置为自动启动；<br />第七步：重启tomcat.<br /><br />具体做的时候可以参考以下资料：<br /><br />竹笋炒肉 Log4J学习笔记（1）（2）（3）<br />http://hedong.3322.org/archives/000193.html<br />http://hedong.3322.org/archives/000195.html<br />http://hedong.3322.org/archives/000197.html<br /><br /><br />具体的实践明天继续或者等测评完157弄好后再继续。<br />ok！<img src ="http://www.blogjava.net/flysky19/aggbug/98131.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flysky19/" target="_blank">不断前进的小乌龟</a> 2007-02-05 22:33 <a href="http://www.blogjava.net/flysky19/articles/98131.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在tomcat中用log4j配置日志系统</title><link>http://www.blogjava.net/flysky19/articles/98130.html</link><dc:creator>不断前进的小乌龟</dc:creator><author>不断前进的小乌龟</author><pubDate>Mon, 05 Feb 2007 14:32:00 GMT</pubDate><guid>http://www.blogjava.net/flysky19/articles/98130.html</guid><wfw:comment>http://www.blogjava.net/flysky19/comments/98130.html</wfw:comment><comments>http://www.blogjava.net/flysky19/articles/98130.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flysky19/comments/commentRss/98130.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flysky19/services/trackbacks/98130.html</trackback:ping><description><![CDATA[在tomcat中用log4j配置日志系统：<br />a）<br />第一步：下载log4j.jar,并把log4j.jar放入$CATALINA_HOME/common/lib.<br />第二步：写配置文件log4j.properties：<br />#log4j.properties<br /><br />log4j.rootLogger=warn, A1,warnlog<br />log4j.appender.A1=org.apache.log4j.ConsoleAppender<br />log4j.appender.A1.layout=org.apache.log4j.PatternLayout<br /># Print the date in ISO 8601 format<br />log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n<br /><br />log4j.appender.warnlog=org.apache.log4j.FileAppender  <br />log4j.appender.warnlog.MaxFileSize=50000KB   <br />log4j.appender.warnlog.MaxBackupIndex=0   <br />log4j.appender.warnlog.file=F:/UserWorkSpace/jiangcm/logs/warn.html  <br />log4j.appender.warnlog.layout=org.apache.log4j.HTMLLayout  <br />log4j.appender.warnlog.layout.ConversionPattern=%d   %X   %-5p     %m%n   <br /><br />log4j.logger.org.apache=warn<br />第三步：在目录“F:/UserWorkSpace/jiangcm/logs”下新建warn.html文件；<br />第四步：把该log4j.properties文件放到$CATALINA_HOME/common/classes/目录下.<br />第五步：重启tomcat.<br />ok，现在就已经在tomcat中配置好log4j了。<br /><br />b）如何使用？——在.java文件中得到一个Logger对象，然后就可以直接输出日志了。如下例子所示：<br />//Bar.java<br />package com.foo;<br />import org.apache.log4j.Logger;<br /><br />public class Bar {<br />static Logger logger = Logger.getLogger(Bar.class);<br />public void doIt() {<br />logger.debug("there is a debug...");<br />logger.info("there is a info...");<br />logger.warn("there is a warning...");<br />}<br />}<br /><br />ok!也就是说在tomcat中配置，只需要把log4j.jar和log4j.properties分别放到$CATALINA_HOME/common/<br /><br />的lib和classes下就ok了！不需要再做别的设置，在.java中直接使用即可。<br /><br />c)注意两个问题：<br />
			1.tomcat下面 Log4j.properties不认, 只认log4j.properties <br />resource url:<br />http://www.blogjava.net/zJun/archive/2006/06/30/55511.html#55860<br /><br />2.关于“log4j:WARN Please initialize the log4j system properly”：<br />  你的tomcat/common/lib下是不是有个log4j的jar啊？删了试试！应该没问题。<br /><img src ="http://www.blogjava.net/flysky19/aggbug/98130.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flysky19/" target="_blank">不断前进的小乌龟</a> 2007-02-05 22:32 <a href="http://www.blogjava.net/flysky19/articles/98130.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载一篇log4j配置的文章，不过这里的方法中，要在.java中指明.properties方法的路径，而其他一些方法中都说放在classes下就可以了的，到底可不可以呢？</title><link>http://www.blogjava.net/flysky19/articles/98079.html</link><dc:creator>不断前进的小乌龟</dc:creator><author>不断前进的小乌龟</author><pubDate>Mon, 05 Feb 2007 09:55:00 GMT</pubDate><guid>http://www.blogjava.net/flysky19/articles/98079.html</guid><wfw:comment>http://www.blogjava.net/flysky19/comments/98079.html</wfw:comment><comments>http://www.blogjava.net/flysky19/articles/98079.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flysky19/comments/commentRss/98079.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flysky19/services/trackbacks/98079.html</trackback:ping><description><![CDATA[url：http://darkbachelor.bokee.com/viewdiary.13185611.html<br /><br /><br /><br />log4j简介<br /><br /><br /><br />简单的说log4j就是帮助开发人员进行日志输出管理的API类库。它最重要的特点就<br /><br /><br /><br />可以配置文件灵活的设置日志信息的优先级、日志信息的输出目的地以及日志信息的输出格式。<br /><br /><br /><br />Log4j除了可以记录程序运行日志信息外还有一重要的功能就是用来显示调试信息。程序员经常会遇到脱离java ide环境调试程序的情况，这时大多数人会选择使用System.out.println语句输出某个变量值的方法进行调试。这样会带来一个非常麻烦的问题：一旦哪天程序员决定不要显示这些System.out.println的东西了就只能一行行的把这些垃圾语句注释掉。若哪天又需调试变量值，则只能再一行行去掉这些注释恢复System.out.println语句。使用log4j可以很好的处理类似情况。<br /><br /><br /><br />log4j使用方法<br /><br /><br /><br />下面介绍的是log4j一些理论方面的知识，读者觉得枯燥的话可以跳过本节直接阅读第三节实例部分。<br /><br /><br /><br />　　1、定义配置文件<br /><br /><br /><br />　  首先使用配置文件将使我们的应用程序更加灵活配置log日志输出方式包括输出优先级、输出目的地、输出格式。Log4j支持两种配置文件格式，一种是XML格式的文件，一种是Java特性文件log4j.properties（键=值）。下面将介绍使用log4j.properties文件作为配置文件的方法：<br /><br /><br /><br />　　①配置根Logger，其语法为：0<br /><br /><br /><br />　　log4j.rootLogger = [ level ] , appenderName, appenderName, … <br /><br /><br /><br />　　其中，level 是日志记录的优先级，分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。Log4j建议只使用四个级别，优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别，您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别，则应用程序中所有DEBUG级别的日志信息将不被打印出来。 appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。 <br /><br /><br /><br />　　②配置日志信息输出目的地Appender，其语法为：<br /><br /><br /><br />　　log4j.appender.appenderName = fully.qualified.name.of.appender.class <br />　　log4j.appender.appenderName.option1 = value1 <br />　　… <br />　　log4j.appender.appenderName.option = valueN <br /><br /><br /><br />　　其中，Log4j提供的appender有以下几种： <br />　　org.apache.log4j.ConsoleAppender（控制台）， <br />　　org.apache.log4j.FileAppender（文件）， <br />　　org.apache.log4j.DailyRollingFileAppender（每天产生一个日志文件），<br />　　org.apache.log4j.RollingFileAppender（文件大小到达指定尺寸的时候产生一个新的文件）， <br />　　org.apache.log4j.WriterAppender（将日志信息以流格式发送到任意指定的地方） <br /><br /><br /><br />　 ③配置日志信息的格式（布局），其语法为：<br /><br /><br /><br />　　log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class <br />　　log4j.appender.appenderName.layout.option1 = value1 <br />　　… <br />　　log4j.appender.appenderName.layout.option = valueN <br /><br /><br /><br />　　其中，Log4j提供的layout有以下几种： <br />　　org.apache.log4j.HTMLLayout（以HTML表格形式布局）， <br />　　org.apache.log4j.PatternLayout（可以灵活地指定布局模式）， <br />　　org.apache.log4j.SimpleLayout（包含日志信息的级别和信息字符串）， <br />　　org.apache.log4j.TTCCLayout（包含日志产生的时间、线程、类别等等信息） <br /><br /><br /><br />　　Log4J采用类似C语言中的printf函数的打印格式格式化日志信息，打印参数如下： %m 输出代码中指定的消息<br /><br /><br /><br />　　%p 输出优先级，即DEBUG，INFO，WARN，ERROR，FATAL <br />　　%r 输出自应用启动到输出该log信息耗费的毫秒数 <br />　　%c 输出所属的类目，通常就是所在类的全名 <br />　　%t 输出产生该日志事件的线程名 <br />　　%n 输出一个回车换行符，Windows平台为“\r\n”，Unix平台为“\n” <br />　　%d 输出日志时间点的日期或时间，默认格式为ISO8601，也可以在其后指定格式，比如：%d{yyy MMM dd HH:mm:ss,SSS}，输出类似：2002年10月18日 22：10：28，921 <br />　　%l 输出日志事件的发生位置，包括类目名、发生的线程，以及在代码中的行数。举例：Testlog4.main(TestLog4.java:10) <br /><br /><br /><br />　　2、在代码中使用Log4j <br /><br /><br /><br />　　①得到记录器<br /><br /><br /><br />　　使用Log4j，第一步就是获取日志记录器，这个记录器将负责控制日志信息。其语法为： <br /><br /><br /><br />　　public static Logger getLogger( String name) <br /><br /><br /><br />　　通过指定的名字获得记录器，如果必要的话，则为这个名字创建一个新的记录器。Name一般取本类的名字，比如： <br /><br /><br /><br />　　static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () )<br /><br /><br /><br />　　②读取配置文件 <br /><br /><br /><br />　　当获得了日志记录器之后，第二步将配置Log4j环境，其语法为：<br /><br /><br /><br />BasicConfigurator.configure ()： 自动快速地使用缺省Log4j环境。<br />　　PropertyConfigurator.configure ( String configFilename) ：读取使用Java的特性文件编写的配置文件。<br /><br /><br /><br />例：PropertyConfigurator.configure(".\\src\\log4j.properties")<br />　　DOMConfigurator.configure ( String filename ) ：读取XML形式的配置文件。<br /><br /><br /><br />　　③插入记录信息（格式化日志信息）<br /><br /><br /><br />　　当上两个必要步骤执行完毕，就可轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方，其语法如下：<br /><br /><br /><br />　　Logger.debug ( Object message ) ;<br />　　Logger.info ( Object message ) ;<br />　　Logger.warn ( Object message ) ;<br />　　Logger.error ( Object message ) ;<br /><br /><br /><br />log4j范例程序<br /><br /><br /><br />下面将使用一个最简单的范例程序来进一步说明log4j的使用方法。程序代码如下：<br /><br /><br /><br /> <br /><br /><br /><br />import org.apache.log4j.*;<br /><br /><br /><br /> <br /><br /><br /><br />public class LogTest {<br /><br /><br /><br /> <br /><br /><br /><br /> <br /><br /><br /><br />    static Logger logger = Logger.getLogger(LogTest.class.getName());<br /><br /><br /><br /> <br /><br /><br /><br />    public static void main(String[] args) {<br /><br /><br /><br /> <br /><br /><br /><br />        PropertyConfigurator.configure ( “.\\src\log4j.properties”)；<br /><br /><br /><br />logger.debug("Debug ...");<br /><br /><br /><br /> <br /><br /><br /><br />        logger.info("Info ...");<br /><br /><br /><br /> <br /><br /><br /><br />        logger.warn("Warn ...");<br /><br /><br /><br /> <br /><br /><br /><br />        logger.error("Error ...");<br /><br /><br /><br /> <br /><br /><br /><br />    }<br /><br /><br /><br />}<br /><br /><br /><br />程序说明：<br /><br /><br /><br />① static Logger logger = Logger.getLogger(LogTest.class.getName());就是创建一个属于LogTest类的Logger对象，创建时要告知Logger你当前的Class是什么。<br /><br /><br /><br />② PropertyConfigurator.configure ( “log4j.properties”)就是说使用当前工程目录下的src文件夹中的log4j.properties文件作为配置文件。若将log4j.properties放在工程根目录下也可不写此句，程序会自动找到配置文件。<br /><br /><br /><br />③ logger.debug就是输出debug的信息，logger.info就是输出提示信息，logger.warn就是显示警告信息，logger.error就是显示错误信息。<br /><br /><br /><br /> <br /><br /><br /><br />下面是配置文件log4j.properties的内容：<br /><br /><br /><br />log4j.rootCategory=DEBUG, stdout，R<br /><br /><br /><br />log4j.appender.stdout=org.apache.log4j.ConsoleAppender<br /><br /><br /><br />log4j.appender.stdout.layout=org.apache.log4j.PatternLayout<br /><br /><br /><br />log4j.appender.stdout.layout.ConversionPattern=%5p (%F:%L) - %m%n<br /><br /><br /><br />log4j.appender.R=org.apache.log4j.RollingFileAppender<br /><br /><br /><br />log4j.appender.R.File=log.txt<br /><br /><br /><br />log4j.appender.R.MaxFileSize=100KB<br /><br /><br /><br />log4j.appender.R.MaxBackupIndex=1<br /><br /><br /><br />log4j.appender.R.layout=org.apache.log4j.PatternLayout<br /><br /><br /><br />log4j.appender.R.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss} %-5p %c - %m%n<br /><br /><br /><br />程序说明：<br /><br /><br /><br />① log4j.rootCategory=DEBUG, stdout，R<br /><br /><br /><br />就是说我要显示所有优先权等於和高于Debug的信息。<br />"stdout"，”R”表示我定义了两个输出端(随便什么名字都好)。<br /><br /><br /><br />②下面的三行说stdout输出端其实是标准输出Console，也就是屏幕。输出的格式是PatternLayout。转换方式是%5p (%F:%L) - %m%n，即前五格用来显示优先权，再显示当前的文件名，加当前的行数。最后是logger.debug()或logger.info()或logger.warn()或logger.error()里的信息。%n表示回车空行。<br /><br /><br /><br />③再加上下面六行则log信息不光显示在屏幕上，而且将被保存在一个叫"log.txt"的文件里，文件最大为100KB。如果文件大小超过100KB，文件会被备份成"log.txt.1"，新的"log.txt"继续记录log信息。<br /><br /><br /><br />接下来我们可以改变log4j.properties，而不需重新编译就可以控制log信息是否显示、log信息的输出端类型、输出方式、输出格式，等等。举例如下：<br /><br /><br /><br />①在log4j.properties文件里把"log4j.rootCategory=DEBUG,stdout,R"改写成"log4j.rootCategory=OFF, stdout,R"，这样所有的log信息都不会显示了；解决了本文开始提出的问题。<br />②在log4j.properties文件里把"log4j.rootCategory=DEBUG,stdout,R"改写成"log4j.rootCategory=INFO, stdout,R"，这样只显示INFO, WARN, ERROR的log信息，而DEBUG信息不会被显示；<br /><br /><br /><br /> <br /><br /><br /><br />在web程序中使用log4j注意问题<br /><br /><br /><br />1、    由于jsp或servlet在执行状态时没有当前路径概念，所有使用PropertyConfigurator.configure（String）语句找log4j.properties文件时要给出相对于当前jsp或servlet的路径转化成为一个绝对的文件系统路径。方法是使用servletcontext.getrealpath(string)语句。例：<br /><br /><br /><br />//得到当前jsp路径<br /><br /><br /><br />String prefix =  getServletContext().getRealPath("/");<br /><br /><br /><br />//读取log4j.properties<br /><br /><br /><br />PropertyConfigurator.configure(prefix+"\\WEB-INF\\log4j.properties");<br /><br /><br /><br />2、相应的log4j.properties设置某个属性时也要在程序中设置绝对路径。例：<br /><br /><br /><br />log4j.appender.R.File属性设置日志文件存放位置。我们可以用读写.properties配置文件的方法进行灵活设置。<br /><br /><br /><br /><br />log4e使用说明<br /><br /><br /><br />在了解了log4j的功能后，我们肯定会我们的程序中编写一些Log4j日志记录。对于使用Eclipse的程序员Log4e将是我们最得力的log4j日志编写助手，现在开始Log4e之旅。<br /><br /><br /><br />Log4e是一个免费的Eclipse Plugin，它可帮助你在你的Java工程中快速加入Log； 我们可以在http://log4e.jayefem.de/index.php/Download网站上下载Log4e最新版本。下载后将相应文件夹拷贝到Eclipse的插件目录下，重新Eclipse，在首选项中会多出一个Log4e选项。<br /><br /><br /><br />Log4e可以有多个插入Log为一个方法、类，当然也可以在当前位置插入Log，同时其也可以把Sysout.out.println()的转换为log；所有的这一切只需要你点点鼠标或者按一次快捷键.<br /><br /><br /><br /><img src ="http://www.blogjava.net/flysky19/aggbug/98079.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flysky19/" target="_blank">不断前进的小乌龟</a> 2007-02-05 17:55 <a href="http://www.blogjava.net/flysky19/articles/98079.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>log4j相比System.out的优势</title><link>http://www.blogjava.net/flysky19/articles/98073.html</link><dc:creator>不断前进的小乌龟</dc:creator><author>不断前进的小乌龟</author><pubDate>Mon, 05 Feb 2007 09:28:00 GMT</pubDate><guid>http://www.blogjava.net/flysky19/articles/98073.html</guid><wfw:comment>http://www.blogjava.net/flysky19/comments/98073.html</wfw:comment><comments>http://www.blogjava.net/flysky19/articles/98073.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flysky19/comments/commentRss/98073.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flysky19/services/trackbacks/98073.html</trackback:ping><description><![CDATA[    Log4j就是帮助开发人员进行日志输出管理的API类库。它最重要的特点就可以配置文件灵活的设置日志信息的优先级、日志信息的输出目的地以及日志信息的输出格式。<br /><br />    Log4j除了可以记录程序运行日志信息外还有一重要的功能就是用来显示调试信息。<br /><br />    程序员经常会遇到脱离java ide环境调试程序的情况，这时大多数人会选择使用System.out.println语句输出某个变量值的方法进行调试。这样会带来一个非常麻烦的问题：一旦哪天程序员决定不要显示这些System.out.println的东西了就只能一行行的把这些垃圾语句注释掉。若哪天又需调试变量值，则只能再一行行去掉这些注释恢复System.out.println语句。<br /><br />    使用log4j可以很好的处理类似情况。<br /><br /><img src ="http://www.blogjava.net/flysky19/aggbug/98073.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flysky19/" target="_blank">不断前进的小乌龟</a> 2007-02-05 17:28 <a href="http://www.blogjava.net/flysky19/articles/98073.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Having successfully configuring log4j </title><link>http://www.blogjava.net/flysky19/articles/98071.html</link><dc:creator>不断前进的小乌龟</dc:creator><author>不断前进的小乌龟</author><pubDate>Mon, 05 Feb 2007 09:22:00 GMT</pubDate><guid>http://www.blogjava.net/flysky19/articles/98071.html</guid><wfw:comment>http://www.blogjava.net/flysky19/comments/98071.html</wfw:comment><comments>http://www.blogjava.net/flysky19/articles/98071.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flysky19/comments/commentRss/98071.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flysky19/services/trackbacks/98071.html</trackback:ping><description><![CDATA[url：<br />http://tomcat.apache.org/faq/logging.html<br />http://marc.theaimsgroup.com/?l=tomcat-user&amp;m=108330970225012&amp;w=2<br /><br /><pre><span style="color: windowtext;" lang="EN-US">Having successfully configuring log4j and after doing some experiments with<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">Tomcat I've decided to step into the fray!<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">I will use 2 steps actually.<b> Log4j for Tomcat and for Webapp.</b> This was<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">tested using TC 5.0.19 on a Windows XP machine... yes, yes, please try to<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">forgive me now....<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">Tomcat Log4j Configuration for TC5 (tested on TC 5.0.19)<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">1. Obtain a recent Log4j jar file, i used log4j-1.2.8.jar<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">2. Place it in the TC common lib directory (&lt;CATALINA_HOME&gt;\common\lib)<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">3. Construct a log4j.properties file and place it in the TC common classes<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">directory (&lt;CATALINA_HOME&gt;\common\classes)<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">Sample log4j.properties used for my test (also attached):<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">log4j.rootLogger=ERROR, A1<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">log4j.appender.A1=org.apache.log4j.ConsoleAppender<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">log4j.appender.A1.layout=org.apache.log4j.PatternLayout<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"># Print the date in ISO 8601 format<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">log4j.logger.org.apache=DEBUG<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">4. Start TC5 and watch the logging kick in, a sample log file is attached.<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">WARNING: Performance will suffer<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">Tomcat Log4j for Webapp<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">The steps for this were stated in an earlier mail, its quite simple to do.<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">1. Place the log4j-1.2.8.jar in to the web-inf lib directory (/WEB-INF/lib)<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">1.1 I also placed the commons-logging.jar file in my web-app also as I am<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">quite confortable with commons logging.<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">2. Place your log4j.properties file in the web-inf classes directory<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">(WEB-INF/classes)<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">3. Configure your log4j.properties file as appropriate for your application.<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">As one person was enquiring about, i did activate the struts and file upload<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">logging in my webapp at one time to diagnose a problem, here is the config<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">i used:<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">log4j.rootLogger=ERROR, A1<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">log4j.appender.A1=org.apache.log4j.ConsoleAppender<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">log4j.appender.A1.layout=org.apache.log4j.PatternLayout<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"># Print the date in ISO 8601 format<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"># Print only messages of level DEBUG or above in the Apache commons and<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">struts file upload<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">log4j.logger.org.apache.commons.httpclient=DEBUG<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">log4j.logger.org.apache.commons.fileupload=DEBUG<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">log4j.logger.org.apache.struts.upload=DEBUG<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">WARNING: There will be a performance impact with the above logging! :)<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">WARNING: You can also activate TC logging as well from this log4j.properties<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">file so don't be too general with your package paths, as again turning on to<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">much logging with affect performance.<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">4. Instantiate your logging class in whatever way you see fit and run your<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">webapp and the logging will be activated.<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">If i've botched up my explanation let me know and I will correct it.<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US"><o:p> </o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">Regards,<o:p></o:p></span></pre><pre><span style="color: windowtext;" lang="EN-US">Shane.<o:p></o:p></span></pre><p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p><br /><img src ="http://www.blogjava.net/flysky19/aggbug/98071.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flysky19/" target="_blank">不断前进的小乌龟</a> 2007-02-05 17:22 <a href="http://www.blogjava.net/flysky19/articles/98071.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于log4j的一些内容记录</title><link>http://www.blogjava.net/flysky19/articles/98031.html</link><dc:creator>不断前进的小乌龟</dc:creator><author>不断前进的小乌龟</author><pubDate>Mon, 05 Feb 2007 07:31:00 GMT</pubDate><guid>http://www.blogjava.net/flysky19/articles/98031.html</guid><wfw:comment>http://www.blogjava.net/flysky19/comments/98031.html</wfw:comment><comments>http://www.blogjava.net/flysky19/articles/98031.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flysky19/comments/commentRss/98031.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flysky19/services/trackbacks/98031.html</trackback:ping><description><![CDATA[1.tomcat下面 Log4j.properties不认, 只认log4j.properties <br />resource url:<br />http://www.blogjava.net/zJun/archive/2006/06/30/55511.html#55860<br /><br />2.关于“log4j:WARN Please initialize the log4j system properly”：<br />  你的tomcat/common/lib下是不是有个log4j的jar啊？删了试试！应该没问题。<br /><br />resource url:http://www.yeyan.info/100-tomcat-t622836.htm<br /><br />3.在tomcat中配置log4j似乎只要三步就可以实现了：<br />第一步：把log4j.jar放入$CATALINA_HOME/common/lib.<br />第二步：将log4j配置文件,可以是log4j.xml,log4j.properties；放进你的项目/WEB-INF/classes/目录下.<br />第三步：重启tomcat.<br /><br />这样直接在.java程序中使用Logger，就可以按照配置文件输出日志了。<br /><br />呜呜，157已经搬走了，只能回到学校试验一下。<br /><br />可能自己以前就是因为没有把配置文件命名为log4j.properties,而是命名为了log4jconfig.properties，所以tomcat总是找不到这个配置文件。<br /><br />4.在tomcat中配置log4j步骤补充：<br />  刚又查了几个权威资料，好像tomcat中配置log44j还必须下载commons-logging.jar (not commons-logging-api.jar) 和log4j.jar一起放到 $CATALINA_HOME/common/lib . <br />相关资料：<br />1.使用log4j为Tomcat输出日志<br />http://www.chinawin.net/myblog/archives/314-log4jTomcataeoeOE.html<br /><br />1. 如果Tomcat当前正在运行，关闭Tomcat。<br />2. 从Apache的网站下载Commons Logging发行包。<br />3. 将压缩包中的commons-logging.jar解压缩到你Tomcat安装路径的common/lib目录中。<br />4. 从Apache的网站下载Log4j发行包。<br />5. 将压缩包中的log4j-1.2.12.jar解压缩到你Tomcat安装路径的common/lib目录中。<br />6. 在Tomcat安装路径的common/classes 创建log4j的配置文件log4j.properties（配置文件在随后一节）。<br />7. 重起Tomcat <br /><br />2.Tomcat FAQ<br />Logging http://tomcat.apache.org/faq/logging.html#userWebapps<br /><br />How should I log in my own webapps? <br />While you can use System.out and System.err to log, we strongly recommend using a toolkit like Log4J or JDK 1.4's java.util.logging package. With these toolkits, you have significantly more functionality (for example, sending emails, logging to a database, controlling at runtime the logging level of different classes, inspecting the logs with a graphical viewer, etc.) than with Tomcat's built-in default logging configuration. <br /><br />We also recommend that you separate your logging from Tomcat's internal logging. That means you should bundle your logging toolkit with your webapp. If you're using Log4J, for example, place the Log4J jar in the WEB-INF/lib directory of your webapp and the Log4J configuration file in the WEB-INF/classes directory of your webapp. This way different web applications can have different logging configurations and you don't need to worry about them interfering with each other. <br /><br />3.Logging in Tomcat<br />http://tomcat.apache.org/tomcat-5.5-doc/logging.html<br /><p>Follow the following steps to setup a file named tomcat.log that has internal 
Tomcat logging output to it: </p><p></p><ol><li>Create a file called log4j.properties with the following content and save it 
into common/classes. 
<div align="left"><table border="0" cellpadding="0" cellspacing="4"><tbody><tr><td bgcolor="#023264" height="1" width="1"><img src="./images/void.gif" border="0" height="1" hspace="0" width="1" /></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" border="0" height="1" hspace="0" width="1" /></td><td bgcolor="#023264" height="1" width="1"><img src="./images/void.gif" border="0" height="1" hspace="0" width="1" /></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" border="0" height="1" hspace="0" width="1" /></td><td bgcolor="#ffffff" height="1"><pre>            log4j.rootLogger=debug, R <br />            log4j.appender.R=org.apache.log4j.RollingFileAppender <br />            log4j.appender.R.File=${catalina.home}/logs/tomcat.log <br />            log4j.appender.R.MaxFileSize=10MB <br />            log4j.appender.R.MaxBackupIndex=10 <br />            log4j.appender.R.layout=org.apache.log4j.PatternLayout <br />            log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n <br />            log4j.logger.org.apache.catalina=DEBUG, R<br /></pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" border="0" height="1" hspace="0" width="1" /></td></tr><tr><td bgcolor="#023264" height="1" width="1"><img src="./images/void.gif" border="0" height="1" hspace="0" width="1" /></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" border="0" height="1" hspace="0" width="1" /></td><td bgcolor="#023264" height="1" width="1"><img src="./images/void.gif" border="0" height="1" hspace="0" width="1" /></td></tr></tbody></table></div></li><li><a href="http://logging.apache.org/log4j">Download Log4J</a> (v1.2 or later) 
and place the log4j jar in $CATALINA_HOME/common/lib. 
</li><li><a href="http://jakarta.apache.org/site/downloads/downloads_commons-logging.cgi">Download 
Commons Logging</a> and place the commons-logging.jar (not 
commons-logging-api.jar) in $CATALINA_HOME/common/lib with the log4j jar. 
</li><li>Start Tomcat </li></ol><br /><br />参考资料：<br />1.Tomcat5.5 with log4j  <br />http://itvincent.blog.hexun.com/5561505_d.html<br /><br />2.log4j-1.2.9.在tomcat5.5下面的配置<br />http://www.cnblogs.com/zhoup/archive/2006/01/18/319817.aspx<br /><br /><img src ="http://www.blogjava.net/flysky19/aggbug/98031.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flysky19/" target="_blank">不断前进的小乌龟</a> 2007-02-05 15:31 <a href="http://www.blogjava.net/flysky19/articles/98031.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>配置log4j</title><link>http://www.blogjava.net/flysky19/articles/96799.html</link><dc:creator>不断前进的小乌龟</dc:creator><author>不断前进的小乌龟</author><pubDate>Tue, 30 Jan 2007 14:22:00 GMT</pubDate><guid>http://www.blogjava.net/flysky19/articles/96799.html</guid><wfw:comment>http://www.blogjava.net/flysky19/comments/96799.html</wfw:comment><comments>http://www.blogjava.net/flysky19/articles/96799.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flysky19/comments/commentRss/96799.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flysky19/services/trackbacks/96799.html</trackback:ping><description><![CDATA[
		<br />一、在java project中配置log4j:<br />参考资料：<br />Log4j的中文文档 http://dev.csdn.net/develop/article/29/29441.shtm<br /><br />目录结构：<br />Log4jConfigPro<br />      |______study<br />                |____Bar.java,MyApp.java<br /><br />      |______resource<br />                |____log4jConfig.properties<br /><br />上述三个文件的内容是从参考资料上拷贝的，但是参考资料上留空.properties文件的路径参数问题，java project中使用相对路径如下：<br />PropertyConfigurator.configure("resource/log4jconfig.properties");<br /><br />java project中相对路径问题详见“java 使用相对路径读取文件”一文。<br /><br /><br />二、在web project中配置log4j：<br />1.还不会，好像要在servlet中配置？？<br /><br />2.不能像在java project中一样的相对路径的方式读取。在web project中要使用如下语句才能读到.properties文件：<br /><br /> PropertyConfigurator.configure("src/study/log4jconfig.properties");<br /><br />注意，这时的相对路径是"src/study/log4jconfig.properties"，而不是"resource/log4jconfig.properties"。<br /><br /><br />因为PropertyConfigurator.configure()实际上是用FileInputStream读取文件（根据路径出错信息可知道），显然，这种方式是不适合web project的，因为开发完成后，将只有webroot下面的目录在跑。<br /><br /><br />web project中到底应该如何配置，以及如何使用相对路径，有待进一步学习和解决。未完待续。。。<br /><br /><br /><br /><img src ="http://www.blogjava.net/flysky19/aggbug/96799.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flysky19/" target="_blank">不断前进的小乌龟</a> 2007-01-30 22:22 <a href="http://www.blogjava.net/flysky19/articles/96799.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>