tutorial mvc mediante libro framework español ejemplos desarrollo books aplicaciones java logging junit log4j

mvc - spring java tutorial



¿Dónde configuro log4j en una clase de prueba JUnit? (4)

Mirando el último caso de prueba de JUnit que escribí, llamé al método LogConjugador de log4j () dentro del constructor de la clase. Eso funcionó bien para ejecutar solo esa clase del comando "ejecutar como JUnit test case" de Eclipse. Pero me doy cuenta de que es incorrecto: estoy bastante seguro de que nuestro conjunto de pruebas principal ejecuta todas estas clases a partir de un proceso y, por lo tanto, la configuración de log4j debería estar ocurriendo más arriba en algún lugar.

Pero aún necesito ejecutar un caso de prueba algunas veces, en cuyo caso quiero que log4j esté configurado. ¿Dónde debo colocar la llamada de configuración para que se ejecute cuando el caso de prueba se ejecute de manera independiente, pero no cuando el caso de prueba se ejecuta como parte de un conjunto más grande?


Es posible que desee ver Simple Logging Facade para Java (SLF4J) . Es una fachada que envuelve a Log4j que no requiere una llamada de configuración inicial como Log4j. También es bastante fácil cambiar Log4j para Slf4j ya que las diferencias API son mínimas.


Generalmente solo coloco un archivo log4j.xml en src / test / resources y dejo que log4j lo encuentre solo: no se requiere código, la inicialización predeterminada de log4j lo recogerá. (Por lo general, quiero configurar mis propios registradores a ''DEPURAR'' de todos modos)


Yo uso las propiedades del sistema en log4j.xml:

... <param name="File" value="${catalina.home}/logs/root.log"/> ...

y comienza las pruebas con:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.16</version> <configuration> <systemProperties> <property> <name>catalina.home</name> <value>${project.build.directory}</value> </property> </systemProperties> </configuration> </plugin>


La clase LogManager determina qué configuración de log4j usar en un bloque estático que se ejecuta cuando se carga la clase. Hay tres opciones destinadas para usuarios finales:

  1. Si especifica log4j.defaultInitOverride en false, no configurará log4j en absoluto.
  2. Especifique manualmente la ruta al archivo de configuración y anule la búsqueda de classpath. Puede especificar la ubicación del archivo de configuración directamente usando el siguiente argumento para java :

    -Dlog4j.configuration=<path to properties file>

    en su configuración de corredor de prueba.

  3. Permita que log4j explore la ruta de clase para un archivo de configuración log4j durante su prueba. (el valor por defecto)

Ver también la documentación en línea .