zoukankan      html  css  js  c++  java
  • Spring MVC中 log4j日志文件配置相对路径

    log4j和web.xml配置webAppRootKey 的问题

    1 在web.xml配置 

    <context-param>
      <param-name>webAppRootKey</param-name>
      <param-value>web.sample.root</param-value>
    </context-param>

    可以用System.getProperty("web.sample.root")来获取属性值。在Eclipse调试Web项目时,项目的路径是一个临时路径,不在真正的路径下,可以通过上述语句打印出属性值,来看看临时项目路径在哪里

    如:System.out.println("web.root:"+ System.getProperty("web.root"));

        输出:web.root:D:apache-tomcat-6.0.30webappswangzun

    2、Spring通过 org.springframework.web.util.WebAppRootListener 这个监听器来压入项目路径。但是如果在web.xml中已经配置了 org.springframework.web.util.Log4jConfigListener 这个监听器,则不需要配置WebAppRootListener了。因为Log4jConfigListener已经包含了WebAppRootListener的功能.

    配置WebAppRootListener:

     <listener>
      <listener-class>org.springframework.web.util.WebAppRootListener</listener-class>
     </listener>


    3、部署在同一容器中的多个Web项目,要配置不同的<param-value>,不能重复webAppRootKey的系统变量名

    4.WebAppRootListener要在ApplicationContext的ContextLoaderListener之前,否则ApplicationContext的bean注入根目录值时会发生无法注入异常。

       <!-- 项目根目录Listener -->
     <listener>
      <listener-class>org.springframework.web.util.WebAppRootListener</listener-class>
     </listener>
     <!--Spring的ApplicationContext 载入 -->
     <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
     </listener>


    4、如果配置了
    log4j.appender.file.File=${web.sample.root}WEB-INF/logs/sample.log  

    log4j会自己自动建立logs目录, 不需要手工显式建立空的logs目录


    在tomcat下部署两个或多个项目时,web.xml文件中最好定义webAppRootKey参数,如果不定义,将会缺省为“webapp.root”,如下:

    <!-- 应用路径 --> 
    <context-param> 
    <param-name>webAppRootKey</param-name> 
    <param-value>webapp.root</param-value> 
    </context-param> 
    最好报纸每个项目的参数值不同,以免引起项目冲突

    严重: Exception sending context initialized event to listener instance of class org.springframework.web.util.Log4jConfigListener
    java.lang.IllegalStateException: Web app root system property already set to different value: 'webapp.root' = [C:Program Files (x86)Apache Software FoundationTomcat 6.0webappsDRMProject] instead of [C:Program Files (x86)Apache Software FoundationTomcat 6.0webappsDRMSn] - Choose unique values for the 'webAppRootKey' context-param in your web.xml files!

    对多个项目要对webAppRootKey进行配置,这里主要是让log能将日志写到对应项目根目录下,如我配置这两个项目的webAppRootKey为
    项目1 的 web.xml:

    <!-- 应用路径 -->
    <context-param> 
    <param-name>webAppRootKey</param-name> 
    <param-value>webapp.root1</param-value> 
    </context-param>

     <!-- 项目根目录Listener -->
     <listener>
      <listener-class>org.springframework.web.util.WebAppRootListener</listener-class>
     </listener>

    项目2的 web.xml:
    <!-- 应用路径 -->
    <context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>webapp.root2</param-value>
    </context-param>

     <!-- 项目根目录Listener -->
     <listener>
      <listener-class>org.springframework.web.util.WebAppRootListener</listener-class>
     </listener>

    这样就不会出现冲突了。
    定义以后,在Web Container启动时将把ROOT的绝对路径写到系统变量里
    然后log4j的配置文件里就可以用${webName.root }来表示Web目录的绝对路径,把log文件存放于webapp中。

    namemax:

     <context-param>
      <param-name>webAppRootKey</param-name>
      <param-value>web.root</param-value>
     </context-param>

     <!-- 项目根目录Listener -->
     <listener>
      <listener-class>org.springframework.web.util.WebAppRootListener</listener-class>
     </listener>

    bean中可以使用:

       <bean id="transformChinese" class="com.zunmi.util.TransformChinese"

             p:outBasePath="${web.root}WEB-INF/destineDomainFile/"
             p:j2fSource="${web.root}WEB-INF/SimpleToTraditional.properties" 
             p:charSet="gbk"
            />

  • 相关阅读:
    HDU 1874 畅通工程续(dijkstra)
    HDU 2112 HDU Today (map函数,dijkstra最短路径)
    HDU 2680 Choose the best route(dijkstra)
    HDU 2066 一个人的旅行(最短路径,dijkstra)
    关于测评机,编译器,我有些话想说
    测评机的优化问题 时间控制
    CF Round410 D. Mike and distribution
    数字三角形2 (取模)
    CF Round410 C. Mike and gcd problem
    CF Round 423 D. High Load 星图(最优最简构建)
  • 原文地址:https://www.cnblogs.com/vincent4code/p/5321829.html
Copyright © 2011-2022 走看看