zoukankan      html  css  js  c++  java
  • [转] Log4j 配置 的webAppRootKey参数问题

    在tomcat下部署两个或多个项目时,web.xml文件中最好定义webAppRootKey参数,如果不定义,将会缺省为“webapp.root”,如下:
    <!-- 应用路径 -->
    <context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>webapp.root</param-value>
    </context-param>
    最好保持每个项目的参数值不同,以免引起项目冲突

    1 在web.xml配置

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

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

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

    3、部署在同一容器中的Web项目,要配置不同的<param-value>,不能重复

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

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


    常见错误:多个工程目录下的web.xml文件的<param-value>webName.root</param- value>相同,就算在tomcat的conf下配置不同的名,例如配置atcs2.xml指向另外一个工程目录,但是恰巧那个工程下的 web.xml里面也配置相同的webAppRootKey,那么将会出现其中一个工程不能够访问的问题。
    网页出现经典的The requested resource (/webName/) is not available错误!

    问题发现方法:在myEclipse下配置log4j,之后会将一些不会报出来的错误亦会报出来,根据信息就可以发现是相同的webAppRootKey覆盖问题。在此我的log4j的报错信息:
    Web app root system property already set to different value: 'atcs.root' = [D:workspace2Huadu_Atcs3WebContent] instead of [D:WorkSpaceHuadu_Atcs3WebContent] - Choose unique values for the 'webAppRootKey' context-param in your web.xml files!

  • 相关阅读:
    constexpr函数"QAlgorithmsPrivate::qt_builtin_popcount"不会生成常数表达式
    Oracle 导出用户下的所有索引创建语句
    如何创建只读权限oracle账户
    CentOS7使用firewalld打开关闭防火墙与端口
    springboot异步线程(三)源码解析(二)
    springboot异步线程(三)源码解析(一)
    MethodInterceptor 的几种用法(二)
    ThreadLocal源码阅读
    MethodInterceptor 的几种用法
    springboot定时器(一)
  • 原文地址:https://www.cnblogs.com/ZhuRenWang/p/4767655.html
Copyright © 2011-2022 走看看