2010-10-26 18 views
10

En mi aplicación iam usando Log4j para el registro. Presentemente estoy colocando log4j.xml en WEB-INF/classes. A continuación se muestran las configuraciones que estoy usando para cargar el archivo log4j.xml.Cargando Log4j.xml desde fuera de la guerra

<!-- language: xml --> 

    <context-param> 
      <param-name>log4jConfigLocation</param-name> 
     <param-value>/WEB-INF/classes/log4j.xml</param-value> 
    </context-param> 

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

Ahora necesito colocar el archivo log4j.xml fuera de mi archivo war. La ubicación probablemente sea JBOSS_HOME/server/default/deploy/settings. En el directorio de configuración necesito colocar mi log4j.xml.

Traté de cargarlo mediante el establecimiento de ruta de clase JBoss editando run.bat de la siguiente manera conjunto JBOSS_CLASSPATH =% RUN_CLASSPATH%;% JBOSS_HOME% \ server \ default \ deploy \ ajustes y utilicé más adelante en web.xml

<!-- language: xml --> 

    <context-param> 
      <param-name>log4jConfigLocation</param-name> 
      <param-value>classpath:/log4j.xml</param-value> 
    </context-param> 

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

Pero lanzando una excepción al implementar la aplicación. La excepción es java.lang.IllegalArgumentException: Invalid 'log4jConfigLocation' parameter: class path resource [/log4j.xml] cannot be resolved to URL because it does not exist

Ahora mi pregunta es cómo puedo cargarla.

+1

@ atulkumar-v-Jain tu edición rompió destacando :-( – Betlista

Respuesta

4

Simplemente puede declarar la ubicación de la configuración de log4j como esto:

<context-param> 
     <param-name>log4jConfigLocation</param-name> 
    <param-value>${JBOSS_HOME}/server/default/deploy/settings/log4j.xml</param-value> 
</context-param> 
+0

No quiero ubicación núcleo duro de bcz lo4j.xml whenver desea cambiar la ubicación de la misma se tiene que modificarlo en web.xml y compilar el archivo war – Narendra

+0

Eso fue solo un ejemplo. Puede usar algo como $ {DEPLOY_SETTINGS} /log4j.xml –

+0

De donde puedo obtener este valor. ¿Tengo que configurarlo como propiedad del sistema? ? – Narendra

9

recuerde agregar "file: //" delante de la ruta, o de lo contrario va a buscar dentro de la carpeta webapp.

El siguiente ejemplo me funciona.

<web-app> 
    <context-param> 
     <param-name>log4jConfigLocation</param-name> 
     <param-value>file://${MY_ENV_VAR}log4j.xml</param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
    </listener> 
</web-app> 
+0

El javadoc para Log4JConfigListener dice: "Si desea mantener su WAR sin expandir o no necesita archivos de registro específicos de la aplicación dentro del directorio WAR, no use la configuración log4j dentro de la aplicación (por lo tanto, no use Log4jConfigListener o Log4jConfigServlet). " Entonces, ¿por qué estás usando esta clase? – herman

+2

Pude hacer que esto funcionara cuando solo hay un '/' después de 'file:' y no dos. Espero que mi consejo ayude a otros por ahí. –

6

Tuve la misma excepción.

que había utilizado este código:

<context-param> 
    <param-name>log4jConfigLocation</param-name> 
    <param-value>classpath:log4j.properties</param-value> 
</context-param> 
<listener> 
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
</listener> 

Esta excepción desapareció cuando ejecuté:

mvn instalación limpia

+1

La mejor parte de esta respuesta es classpath: log4j.properties – Azim

0

que puede utilizar:

  • archivo : /// $ {MY_ENV_VAR } /log4j.xml
  • file: /// $ {} JBOSS_HOME /server/default/deploy/settings/log4j.xml

en su interior log4jConfigLocation etiqueta. atención

de pago para añadir file: /// si la ruta es absoluta (fuera de la carpeta webapp )

0

Se puede establecer como esta en el archivo web.xml:

<context-param> 
      <param-name>log4jConfigLocation</param-name> 
      <param-value>file://${JBOSS_HOME}/domain/configuration/log4j.xml</param-value> 
     </context-param> 

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

Nota: para el entorno de Windows, comience con el doble "/" como "archivo: //". Para entorno Linux con sigle "/" como "archivo: /".

0

La sintaxis para es un poco diferente: utiliza log4jConfiguration param. Consulte estas respuestas: @rgoers @Gowtham

Cuestiones relacionadas