我的架构是s2sh,下面是我的Log4j的配置文件,我的${webappRoot}指向的是我web程序的根目录(D:\Services\Tomcat6\webapps\myweb\),使用的时候没有问题,正常输出两个日志文件,里面记录的是我在程序中输出的内容。但是在每次启动tomcat的时候,在D盘根目录会生成d:\log\f1.log和d:\log\f2.log里面记录的是tomcat启动时spring打印出的信息,我奇怪为什么会在两个地方生成日志文件?是不是我的配置文件哪里配置的不对?但是我找了好多地方我没配置过在D盘根目录生成么日志的地方啊,请大家帮我看一下,谢谢。
log4j.rootLogger=INFO,stdout,LOGFILE
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss}[%c]-[%p] %m%nlog4j.appender.LOGFILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOGFILE.File=${webappRoot}/log/f1 
log4j.appender.LOGFILE.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss\:SSS} [%c]-[%p] %m%nlog4j.logger.login=INFO,stdout2,L
log4j.additivity.login=false
log4j.appender.stdout2=org.apache.log4j.ConsoleAppender
log4j.appender.stdout2.Target=System.out
log4j.appender.stdout2.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout2.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss}[%c]-[%p] %m%nlog4j.appender.L=org.apache.log4j.DailyRollingFileAppender
log4j.appender.L.File=${webappRoot}/log/f2 
log4j.appender.L.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.L.layout=org.apache.log4j.PatternLayout
log4j.appender.L.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss\:SSS} [%c]-[%p] %m%n

解决方案 »

  1.   

    log4j.appender.LOGFILE=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.LOGFILE.File=${webappRoot}/log/f1  
    log4j.appender.LOGFILE.DatePattern = '.'yyyy-MM-dd'.log'
    log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.LOGFILE.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss\:SSS} [%c]-[%p] %m%n
    log4j.appender.L=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.L.File=${webappRoot}/log/f2  
    log4j.appender.L.DatePattern = '.'yyyy-MM-dd'.log'
    log4j.appender.L.layout=org.apache.log4j.PatternLayout
    log4j.appender.L.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss\:SSS} [%c]-[%p] %m%n这两段不就是生产日志文件的配置吗?
      

  2.   

    楼主执行下一下语句就会明白了
    System.out.println(new File(org.apache.log4j.helpers.OptionConverter.substVars("${webappRoot}/log/f1 ", System.getProperties())).getAbsolutePath());
    ${webappRoot} 你没有配置所以为空..........相当于"/log/f1"所以在盘了....
      

  3.   


    ${webappRoot}我已经在web.xml里面配置过了,有一个servlet设置webappRoot的值,现在是getServletContext().getRealPath("/")
      

  4.   


    是产生了,但是这两个文件分别在我的工程目录下和D盘根目录下都有,我觉得就算不写${webappRoot}也不能在D盘根目录吧?
      

  5.   

    webappRoot在web.xml配置应该不起作用的,你试试再说了
    System.out.println(new File("/ttt/aaaa").getAbsolutePath());
    别不试验就说帮助你的人是错的...............
      

  6.   


    现在执行完的结果是
    D:\Services\Tomcat6.0.33\webapps\Myweb\log\log.log
    在D盘根目录还是有