복붙노트

[SPRING] Spring의 WebApproot

SPRING

Spring의 WebApproot

이 오류 메시지가 나타납니다.

내 파일에 정의 된 webAppRootKey가 없기 때문에 이상합니다. 이게 뭐야?

해결법

  1. ==============================

    1.webAppRootKey는 스프링이 몇 곳에서 사용하는 컨텍스트 매개 변수입니다. 이 경우 Log4jWebConfigurer가 사용하고 있습니다. 웹 응용 프로그램 루트를 log4j 구성 파일에서 사용할 수있는 시스템 등록 정보로 표시합니다.

    webAppRootKey는 스프링이 몇 곳에서 사용하는 컨텍스트 매개 변수입니다. 이 경우 Log4jWebConfigurer가 사용하고 있습니다. 웹 응용 프로그램 루트를 log4j 구성 파일에서 사용할 수있는 시스템 등록 정보로 표시합니다.

    log4j.appender.testfile.File=${webapp.root}/WEB-INF/testlog.log 
    

    어떤 이유로 웹 응용 프로그램 루트를 기준으로 로그를 찾으려는 경우이 옵션을 사용합니다.

    당신이 겪고있는 문제는 일부 컨테이너 (특히 Tomcat)가 시스템 속성의 webapp 매핑을 유지하지 않는다는 것입니다. webAppRootKey를 지정하지 않으면 Spring은이를 webapp.root로 기본 설정합니다. 동일한 컨테이너에서 두 개의 앱을 실행 중이므로 시작하려는 두 번째 앱은 webAppRootKey가 이미 설정되어 있고 (기본값을 통해) 오류가 발생했다고 간주합니다. 그렇지 않으면 webAppRootKey가 잘못 설정되어 다른 웹 응용 프로그램의 한 웹 응용 프로그램 로그에서 끝날 수 있습니다.

    web.xml의 컨텍스트 매개 변수를 사용하여 다른 webAppRootKey를 다음과 같이 지정할 수 있습니다.

    <context-param>
        <param-name>webAppRootKey</param-name>
        <param-value>webapp.root.one</param-value>
    </context-param>
    

    log4j.appender.testfile.File=${webapp.root.one}/WEB-INF/testlog.log 
    

    당신의 log4j. 이것은 충돌을 처리해야합니다.

  2. ==============================

    2.

    <context-param>
     <param-name>log4jExposeWebAppRoot</param-name>
     <param-value>false</param-value>
    </context-param>
    

    ...

    이것은 나를 위해 문제를 해결했다. 신용 : - http://forum.springsource.org/archive/index.php/t-32873.html

  3. ==============================

    3.응용 프로그램 서버에 기본 Log4jConfigListener 구성을 가진 여러 개의 웹 응용 프로그램이있는 것 같습니다.

    응용 프로그램 서버에 기본 Log4jConfigListener 구성을 가진 여러 개의 웹 응용 프로그램이있는 것 같습니다.

    Log4jConfigurationListener의 기본 동작은 webapp 루트를 webapp.root라는 시스템 속성으로 표시하여 로그 파일 위치를 지정할 때이를 사용할 수 있도록합니다. 다만, 같은 이름의 시스템 프롭퍼티가 벌써 존재하는 경우는, 예외가 슬로우됩니다.

    webAppRootKey라는 을 사용하여 해당 시스템 등록 정보에 대한 응용 프로그램 별 이름을 구성하거나 log4jConfigListener의 log4jExposeWebAppRoot를 false로 설정하여 시스템 등록 정보의 표시를 사용 불가능하게 할 수 있습니다.

    참조 :

  4. ==============================

    4.문제를 제거하지 않고 다른 사람이 위의 작업을 수행 한 경우

    문제를 제거하지 않고 다른 사람이 위의 작업을 수행 한 경우

    우리 webapp는 webAppRootKey가 올바르게 설정되어 있었지만 위의 예외는 여전히 있습니다. 글래스 피쉬를 다시 시작하고 동일한 war 파일을 재배포하면 효과가 나타납니다.

  5. ==============================

    5.log4j 대신 logback을 사용하여 동일한 오류가 발생하면 다음과 같이 해결됩니다.

    log4j 대신 logback을 사용하여 동일한 오류가 발생하면 다음과 같이 해결됩니다.

    <context-param>
     <param-name>logbackExposeWebAppRoot</param-name>
     <param-value>false</param-value>
    </context-param>
    
  6. from https://stackoverflow.com/questions/5014651/webapproot-in-spring by cc-by-sa and MIT license