<!-- - Configures Log4J for this web app. - As this context specifies a context-param "log4jConfigLocation", its file path - is used to load the Log4J configuration, including periodic refresh checks. - - Would fall back to default Log4J initialization (non-refreshing) if no special - context-params are given. - - Exports a "web app root key", i.e. a system property that specifies the root - directory of this web app, for usage in log file paths. - This web app specifies "petclinic.root" (see log4j.properties file). --> <!-- Leave the listener commented-out if using JBoss --> <!-- <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> --> <!-- - Loads the root application context of this web app at startup, - by default from "/WEB-INF/applicationContext.xml". - Note that you need to fall back to Spring's ContextLoaderServlet for - J2EE servers that do not follow the Servlet 2.4 initialization order. - - Use WebApplicationContextUtils.getWebApplicationContext(servletContext) - to access it anywhere in the web application, outside of the framework. - - The root context is the parent of all servlet-specific contexts. - This means that its beans are automatically available in these child contexts, - both for getBean(name) calls and (external) bean references. --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
首先需要配置ContextLoaderListener,如果要配置Log4jConfigListener,那么一定要配置在ContextLoaderListener的前面。
ContextLoaderListener是加载应用的上下方环境(context),如果把这个context记为A,那么A下面还可以有子Context,这些Context配置在以*-servlet.xml的文件中。可以配置多个*-servlet.xml,它们共享context A。
Log4j的配置文件可以定制:
<context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/log4j.properties</param-value> </context-param>