2011-07-14 13 views
35

El archivo de configuración para logback se encuentra en classpath y, por lo tanto, es Eclipse-project-specific, que no es lo que yo quiero. Estoy usando múltiples utilidades de Java, todas ellas residen en un solo proyecto (esto comparte la ruta de clase), y necesito usar una configuración específica para algunas de ellas.¿Cómo usar múltiples configuraciones con logback en un solo proyecto?

He intentado con la sustitución de variables y el configurador de Joram, pero nada funcionó para mí. Probablemente esto fue culpa mía, y lo resolveré algún día, pero por ahora necesitaría una solución simple.

+0

¿Cuál es la "configuración específica" que necesita para sus diferentes piezas? –

+0

Nada realmente "especial" ... en algunas utilidades necesito registrar más, en otras necesito registrar menos. Esta es la parte más importante para mí.También quiero redirigir la salida en diferentes archivos (idealmente basados ​​en la clase principal). – maaartinus

+0

Parece que debería poder gestionarlo todo desde un solo archivo de configuración. No estoy seguro de qué quiere decir con el bit "Eclipse-específico del proyecto" en su pregunta. ¿Puedes aclarar qué es exactamente lo que buscas? –

Respuesta

54

OPCIÓN 1: especifique la ubicación del archivo de configuración de inicio de sesión con la propiedad del sistema logback.configurationFile. De hecho, esto le permite tener múltiples archivos de configuración por proyecto. Según el logback documentation, el valor de esta propiedad puede ser una URL, un recurso en la ruta de clase o una ruta a un archivo externo a la aplicación. Por ejemplo:
-Dlogback.configurationFile=/path/to/config.xml

OPCIÓN 2: utilizar la sustitución de variables para establecer el nombre del archivo de registro con una propiedad del sistema. Por ejemplo:

  1. Su appender puede establecer el archivo de la siguiente manera:
    <file>/var/tmp/${mycompany.myapplication}.log</file>
  2. Y a continuación, se puede especificar el valor de esa variable en el lanzamiento de Java:
    -Dmycompany.myapplication=SomeUtility

OPCIÓN 3: establecer el nivel del registrador con una propiedad del sistema. Esto le permitirá registrar más/menos. Por ejemplo:

  1. poner esto en su archivo de configuración logback:
    <logger name="com.mycompany" level="${mycompany.logging.level:-DEBUG}"/>
    Esto hace que el paquete especificado para iniciar la sesión en el nivel de depuración por defecto.
  2. Si desea cambiar el nivel de registro de información en una aplicación específica, luego pase el siguiente para Java en el lanzamiento de esta solicitud:
    -Dmycompany.logging.level=INFO

Opción 4: añadir/eliminar una appender pasando un sistema de propiedad del parámetro de línea de comandos a java. Esto le permitirá iniciar sesión en diferentes lugares. Tenga en cuenta que conditional processing requires janino. Por ejemplo:

  1. poner esto en su archivo de configuración logback donde quiera que pondría <appender-ref>, cambiando el valor ref a uno de sus propios <appender> s, por supuesto:
    <if condition="property("mycompany.logging.console").equalsIgnoreCase("true")"> <then><appender-ref ref="STDOUT"/></then></if>
  2. Si desea habilitar esta appender, a continuación, pasar a la siguiente para java cuando se inicia la aplicación:
    -Dmycompany.logging.console=true

en cuanto a las propiedades del sistema, que ellos pasan a java como -D argumentos, p.
java -Dmy.property=/path/to/config.xml com.mycompany.MyMain

+5

¡Lista agradable! Otra opción: logback admite configuración programática. Si el punto de diferenciación en la aplicación son las clases principales, esas clases podrían configurar el logback por sí mismas. –

Cuestiones relacionadas