log4j.xml代码如下:<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
  <param name="ConversionPattern" value="%d [%t] %p - %m%n" />
</layout>
<!--过滤器设置输出的级别-->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
  <param name="levelMin" value="INFO"/>
  <param name="levelMax" value="INFO"/>
  <param name="AcceptOnMatch" value="true"/>
</filter>
  </appender>
 
<!--debug日志输出配置-->
 <appender name="debug"
  class="org.apache.log4j.DailyRollingFileAppender">
  <param name="File" value="../webapps/Test/WEB-INF/logs/debug.log" />
  <param name="Append" value="true" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%d [%t] %p - %m%n" />
  </layout>
  <filter class="org.apache.log4j.varia.LevelRangeFilter">
   <param name="LevelMax" value="DEBUG" /><!--过滤只输出DEBUG级别日志-->
   <param name="LevelMin" value="DEBUG" />
  </filter>
 </appender>
 
<!--infor日志输出配置-->
 <appender name="info"
  class="org.apache.log4j.DailyRollingFileAppender">
  <param name="File" value="../webapps/Test/WEB-INF/logs/info.log" />
  <param name="Append" value="true" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%d [%t] %p - %m%n" />
  </layout>
  <filter class="org.apache.log4j.varia.LevelRangeFilter">
   <param name="LevelMax" value="INFO" />
   <param name="LevelMin" value="INFO" />
  </filter>
 </appender>
<!--warn日志输出配置-->
 <appender name="warn"
  class="org.apache.log4j.DailyRollingFileAppender">
  <param name="File" value="../webapps/Test/WEB-INF/logs/warn.log" />
  <param name="Append" value="true" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%d [%t] %p - %m%n" />
  </layout>
  <filter class="org.apache.log4j.varia.LevelRangeFilter">
   <param name="LevelMax" value="WARN" />
   <param name="LevelMin" value="WARN" />
  </filter>
 </appender>
 
<!--error日志输出配置-->
 <appender name="error"
  class="org.apache.log4j.DailyRollingFileAppender">
  <param name="File" value="../webapps/Test/WEB-INF/logs/error.log" />
  <param name="Append" value="true" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%d [%t] %p - %m%n" />
  </layout>
  <filter class="org.apache.log4j.varia.LevelRangeFilter">
   <param name="LevelMax" value="ERROR" />
   <param name="LevelMin" value="ERROR" />
  </filter>
 </appender>
 
<!--fatal日志输出配置-->
 <appender name="fatal"
  class="org.apache.log4j.DailyRollingFileAppender">
  <param name="File" value="../webapps/Test/WEB-INF/logs/fatal.log" />
  <param name="Append" value="true" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%d [%t] %p - %m%n" />
  </layout>
  <filter class="org.apache.log4j.varia.LevelRangeFilter">
   <param name="LevelMax" value="FATAL" />
   <param name="LevelMin" value="FATAL" />
  </filter>
 </appender> <root>
  <priority value="debug" /><!--日志输出最低级别-->
  <appender-ref ref="console"/>
  <appender-ref ref="debug" /><!--debug日志输出-->
  <appender-ref ref="info" /><!--info日志输出-->
  <appender-ref ref="warn" /><!--warn日志输出-->
  <appender-ref ref="error" /><!--error日志输出-->
  <appender-ref ref="fatal" /><!--fatal日志输出-->
 </root>
</log4j:configuration>web.xml中log4j的配置:  <!-- log4j -->
  <context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.xml</param-value>
  </context-param> 此时控制台起卡住了,即tomcat无效启动成功,如果我将相对路径改为绝对路径,即:../改为:D:/,这时tomcat能够启动成功了,这到底是什么原因呢?

解决方案 »

  1.   

    我都是直接用log4j.properties,直接放在类路径的根目录(log4j默认路径),不需要再另行设置。
      

  2.   

    用log4j.xml配置比较直观点吧。
    你用log4j.properties是用相对路径还是绝对路径呢?用相对路径,会不会出现什么问题?(绝对路径显然不能用于发布项目的,只能用于测试)
      

  3.   

    不用另行设置路径,log4j.properties直接放在classes目录下,它自己会读到的。
      

  4.   

    你没认真看题啊
    我是说输出的日志文件,比如:info.log,当设置为相对路径时,被卡住了,不是说设置log4j.properties或log4j.xml的路径。
      

  5.   

    我晕,你的相对路劲不对啊。
    应该是这个“../logs/fatal.log”
      

  6.   

    把log4j.xml拿到项目中去,放在src下,或放在WEB_INF下也行.然后再写相对路径.
    楼主目前的写法,是放到tomcat的某子目录下了.
      

  7.   

    为什么不用log4j.properties文件配置:#log4j.rootLogger=DEBUG,A1,R
    log4j.rootLogger=info,A1,R
    log4j.appender.A1=org.apache.log4j.ConsoleAppender
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%c] [%p] - %m%nlog4j.appender.R=org.apache.log4j.RollingFileAppender
    log4j.appender.R.File=mylog.txt
    log4j.appender.R.MaxFileSize=500KB
    log4j.appender.R.MaxBackupIndex=10
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%c] [%p] - %m%n