2010-12-23 8 views
5

Estoy usando el complemento Cargo Maven para implementar un WAR en un servidor remoto, y estoy teniendo problemas. Probablemente creare una segunda pregunta para ese problema, pero esta es sobre anular la configuración log4j de un plugin Maven. Cargo usa las bibliotecas de clientes de JBoss para enviar cosas a los servidores de JBoss (lo cual intento hacer). La biblioteca de JBoss usa log4j. Cargo no configura ningún tipo de capa de mapeo que yo sepa.¿Cómo anulo la configuración log4j de un Plugin de Maven?

Por lo tanto, esencialmente, los mensajes de registro se están produciendo en la biblioteca dependiente de un complemento Maven. He intentado establecer -Dlog4j.debug y obtuve esta información:

log4j: Trying to find [log4j.xml] using ClassRealm[plugin>org.codehaus.cargo:cargo-maven2-plugin:1.0.5, parent: ClassRealm[maven.api, parent: null]] class loader. 
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource(). 
log4j: Trying to find [log4j.properties] using context classloader ClassRealm[plugin>org.codehaus.cargo:cargo-maven2-plugin:1.0.5, parent: ClassRealm[maven.api, parent: null]]. 
log4j: Using URL [jar:file:/C:/Users/username/.m2/repository/org/jboss/jbossts/jbossjts/4.13.1.Final/jbossjts-4.13.1.Final.jar!/log4j.properties] for automatic log4j configuration. 
log4j: Reading configuration from URL jar:file:/C:/Users/username/.m2/repository/org/jboss/jbossts/jbossjts/4.13.1.Final/jbossjts-4.13.1.Final.jar!/log4j.properties 
log4j: Could not find root logger information. Is this OK? 
log4j: Parsing for [com.arjuna] with value=[INFO, default, stdout]. 
log4j: Level token is [INFO]. 
log4j: Category com.arjuna set to INFO 
log4j: Parsing appender named "default". 
log4j: Parsing layout options for "default". 
log4j: Setting property [conversionPattern] to [%d [%t] %-5p %c - %m%n]. 
log4j: End of parsing for "default". 
log4j: Setting property [maxBackupIndex] to [2]. 
log4j: Setting property [file] to [transaction.log]. 
log4j: Setting property [maxFileSize] to [500KB]. 
log4j: setFile called: transaction.log, true 
log4j: setFile ended 
log4j: Parsed "default" options. 
log4j: Parsing appender named "stdout". 
log4j: Parsing layout options for "stdout". 
log4j: Setting property [conversionPattern] to [%d [%t] %-5p %c - %m%n]. 
log4j: End of parsing for "stdout". 
log4j: Setting property [threshold] to [WARN]. 
log4j: Parsed "stdout" options. 
log4j: Handling log4j.additivity.com.arjuna=[null] 
log4j: Finished configuring. 
log4j:WARN No appenders could be found for logger (org.jnp.interfaces.TimedSocketFactory). 
log4j:WARN Please initialize the log4j system properly. 

Entonces intentado fijar -Dlog4j.configuration = mylog4j.properties pero tengo esto:

log4j: Trying to find [mylog4j.properties] using context classloader ClassRealm[plugin>org.codehaus.cargo:cargo-maven2-plugin:1.0.5, parent: ClassRealm[maven.api, parent: null]]. 
log4j: Trying to find [mylog4j.properties] using ClassRealm[plugin>org.codehaus.cargo:cargo-maven2-plugin:1.0.5, parent: ClassRealm[maven.api, parent: null]] class loader. 
log4j: Trying to find [mylog4j.properties] using ClassLoader.getSystemResource(). 
log4j: Could not find resource: [mylog4j.properties]. 
log4j:WARN No appenders could be found for logger (org.jnp.interfaces.TimedSocketFactory). 
log4j:WARN Please initialize the log4j system properly. 

Parece que el archivo de configuración log4j debe estar en el classpath Maven ,, pero no sé cómo incluir archivos aleatorios allí, solo dependencias. Realmente quiero establecer esta información para que pueda obtener información de depuración de las bibliotecas de JBoss a fin de solucionar mi problema.

+0

La traza extendida de la pila del problema me ayudó, de hecho, a identificar dónde se generaba la excepción (y estoy trabajando lentamente en resolverla). Aún así, parece que podría ser información útil saber cómo hacerlo esta anulación, si es posible. –

Respuesta

8

Con log4j.configuration, establecerá una cadena de recursos. Eche un vistazo a log4j default initialization process y los ejemplos.

Si utiliza una sintaxis como esta

-Dlog4j.configuration=mylog4j.properties 

se espera que el archivo en la ruta de clase. Pero también puede usar una sintaxis como esta

-Dlog4j.configuration=file:/<path>/mylog4j.properties 

para especificar una ubicación de archivo totalmente calificada.

+0

Gracias por esto. ¿Hay alguna manera de hacer esto sin agregar nada a la línea de comandos maven? es decir, configurar la ubicación del archivo para que esté en el classpath del complemento? –

+0

@nat k log4j busca de forma predeterminada el classpath para encontrar un archivo de configuración ([Inicialización predeterminada] (https://logging.apache.org/log4j/1.2/manual.html#defaultInit)) por lo que debería ser suficiente para ponerlo el archivo de configuración en 'src/main/resources'. Si entra en conflicto con otros archivos, debe establecer la propiedad 'log4j.configuration'. Debería ser posible hacerlo en pom.xml, por lo que no necesita la línea de comando. – FrVaBe

+0

Gracias por eso. Yo también lo pensé, pero con el complemento que estoy usando (maven-docbkx-plugin), el archivo de configuración log4j no se está recogiendo de src/main/resources. Terminé usando el complemento maven-set-properties para establecer la variable log4j.configuration. –

Cuestiones relacionadas