用log4j记录日志,发现了很奇怪的问题。1、用eclipse3.7开发spring web项目testWeb,
log4j.properties:
log4j.rootLogger=DEBUG,R,stdout
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=${logFilePath}/test.logweb.xml:
<context-param>
<param-name>logFilePath</param-name>
<param-value>www/log</param-value>
</context-param>我的eclipse安装在d盘
启动服务后,发现日志在D:\test.log
而在eclipse发布的目录下的testWeb\www\log\下没有日志文件。请问这是什么原因造成的?

解决方案 »

  1.   

    你这样试试--web.xml:
    <context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>test</param-value>
    </context-param>log4j.properties:
    log4j.appender.R.File=${test}/logs/test.log
      

  2.   

    还是一样。log文件仍然生成到了D盘根目录
      

  3.   

    你看一下testWeb下面有logs文件夹么
      

  4.   

    我就直接写的log4j.appender.R.File=${test}/test.log
    但是日志仍然是在D盘根目录
      

  5.   

    ${test}/
    最终是什么呢??
    应该就变成d盘了吧
      

  6.   

    context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>test</param-value>
    </context-param>
    ${test}不应该是我工程发布的路径下吗?
      

  7.   

    我觉得这个问题,可能跟eclipse3.7有关。
      

  8.   

    有个log4j.properties文件里面可以配置你日志的生成目录
      

  9.   

    我已经配置了路径了。
    而且我把工程拷贝到了tomcat下执行,启动tomcat,
    发现日志仍然生成在了D盘。
    真是郁闷了。
    我用maven构建的工程,完全没有问题,正常执行。
    同样的代码,只不过现在不是maven的模式,就不能正常执行了,真奇怪。
      

  10.   

    log.getFile();
    打印出来看看。
      

  11.   

    把这个${logFilePath}值打印看下
      

  12.   


             DailyRollingFileAppender appender = (DailyRollingFileAppender)Logger.getRoot().getAppender("R");
             System.err.print("log path = " + appender .getFile());
    打印出来看看是否是${logFilePath}值有问题。
      

  13.   

    log4j。properties:
    log4j.appender.R.File=${webapp.root}/WEB-INF/logs/test.logweb。xml里面没有任何配置,用的是spring,是可以自动加载上properties的打印出来的是:
    log path = /WEB-INF/logs/test.log
      

  14.   

    log4j.appender.R.File=c:/test.log他还能生成到D盘?
      

  15.   

    我知道,现在是分析原因呢。
    都得到日志文件的路径了尽然写到D盘了,真是头一次见。
    要不你别在配置文件设路径了,直接在代码里里设
    DailyRollingFileAppender应该有设置文件的方法。
      

  16.   

    我碰到过类似的问题。
    是这样的,默认生成的日志是在tomcat的安装目录所在的根目录下面。
    你的tomcat安装在D盘?
      

  17.   


    我到觉得是apache-tomcat\bin下呢,那你怎么解决的。
      

  18.   

    我的tomcat的确放在d盘。
    可是我已经在properties里面定义了
    log4j.appender.R.File=${webapp.root}/WEB-INF/logs/test.log
    难道这个webapp.root是表示了tomcat的根路径啊。
    可是,我同事其他的工程也是用的这样的方法,
    那我在web.xml:
    <context-param>
    <param-name>logFilePath</param-name>
    <param-value>www/log</param-value>
    </context-param>
    定义了logFilePath
    然后log4j.appender.R.File=${logFilePath}/test.log
    log就到了工程路径下。
    这是什么原因,是我的log文件写的不对?
      

  19.   

    ${webapp.root} 是需要你自己定义的。
      

  20.   

    不是。
    是配置文件的问题。
    都在web.xml里面。
    1、可以不配置properties,这样就只能是在tomcat的根路径下。
    2、配置properties,加上listener。
      

  21.   

    <context-param> <param-name>log4jConfigLocation</param-name> <param-value>WEB-INF/classes/log4j.properties</param-value> </context-param> -<context-param> <param-name>webAppRootKey</param-name> <param-value>myappfuse.root</param-value> </context-param> -<listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>
      

  22.   

    弱弱 回答下 你eclipse 关掉 再开下吧