java - name - ¿Cómo usar múltiples configuraciones con logback en un solo proyecto?
logback.xml spring boot (1)
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 la documentación de inicio de sesión , 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: use la sustitución de variables para establecer el nombre del archivo de registro con una propiedad del sistema. Por ejemplo:
- Su appender puede establecer el archivo de la siguiente manera:
<file>/var/tmp/${mycompany.myapplication}.log</file>
- Y luego puede especificar el valor de esa variable al ejecutar java:
-Dmycompany.myapplication=SomeUtility
OPCIÓN 3: configure el nivel del registrador con una propiedad del sistema. Esto le permitirá registrar más / menos. Por ejemplo:
- Pon esto en tu archivo de configuración de logback:
<logger name="com.mycompany" level="${mycompany.logging.level:-DEBUG}"/>
Esto hace que el paquete especificado se registre al nivel de DEPURACIÓN por defecto. - Si desea cambiar el nivel de registro a INFO en una aplicación específica, pase lo siguiente a java al iniciar esa aplicación:
-Dmycompany.logging.level=INFO
OPCIÓN 4: agregue / elimine un appender pasando un parámetro de la línea de comando de la propiedad del sistema a java. Esto le permitirá iniciar sesión en diferentes lugares. Tenga en cuenta que el procesamiento condicional requiere janino . Por ejemplo:
- Pon esto en tu archivo de configuración de logback, donde pondrías un
<appender-ref>
, cambiando el valor deref
a uno de tus propios<appender>
s, por supuesto:
<if condition="property("mycompany.logging.console").equalsIgnoreCase("true")"> <then><appender-ref ref="STDOUT"/></then></if>
- Si desea habilitar este appender, pase lo siguiente a java al iniciar esa aplicación:
-Dmycompany.logging.console=true
En cuanto a las propiedades del sistema, las pasas a java como argumentos -D
, por ej.
java -Dmy.property=/path/to/config.xml com.mycompany.MyMain
El archivo de configuración para logback se encuentra en classpath y, por lo tanto, es Eclipse-project-specific, que no es lo que 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.
Probé 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.