一个appender的定义:<param name="File" value="${catalina.home}/logs/ssal/ssal-web.log" />这个${catalina.home}在哪定义的呢?

解决方案 »

  1.   

    tomcat?的话就在tomcat 看看!!!
      

  2.   


    直接跑的unit test,没用tomcat
    而且把${}括号里面的东东随便改好像也不会报错,奇怪。
      

  3.   

    http://flashdream8.javaeye.com/blog/698087
      

  4.   

    在系统属性里面:System.getProperty("catalina.home");
      

  5.   

    你这appender实际上是不是根本没用到?
      

  6.   

    JVM在启动的时候,会将环境变量,转换到 系统属性 里面。
    可以通过System.getProperty("");来获取。
    catalina.home属性,就是运行tomcat的JVM的系统属性之一。
    一般是由操作系统的环境变量CATALINA_HOME转换而来。
    如果操作系统没有设置,tomcat会采用默认设置来填充该内容。
      

  7.   

    楼主看看tomcat/bin下面的catalina.bat或者相关的几个bat文件里面,
    就有 CATALINA_HOME 属性的设置,当然还有JAVA_HOME等几个属性的设置。
    这些环境变量,在JVM启动的时候,都会被转换成 系统属性(键值对的形式保存)。
      

  8.   

    我看了一下log4j相关的一源码的确是取系统属性,System.getProperty(..., null)
    当该属性没有定义的时候,也就是返回为nul的时候,前面那个变量${...}会被忽略,也就是直接用的后面的路径所以即使随便修改那个变量,也没报错,后来发现始终在C盘根目录下建了这个log文件当然,如果机器存在权限访问的问题,不能任意在C盘下,或者根目录下建文件的时候,就会出错了
      

  9.   


    实际上用到了,只不过路径是在根目录下,我的windows系统是在C盘下面
      

  10.   

    在WEB-INF/classes/log4j.properties,如下#A4 Print message into file
    log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.A4.File=${catalina.base}/webapps/mlm/logs/hb-log ####这一行中使用了####
    log4j.appender.A4.DatePattern='.'yyyy-MM-dd'.txt'
    log4j.appender.A4.layout=org.apache.log4j.PatternLayout
    log4j.appender.A4.layout.ConversionPattern=[HB: %-5p] %d{yyyy-MM-dd HH:mm:ss} %l: %m%n