Le fichier de configuration pour la consignation se trouve sur le chemin d'accès aux classes et est par conséquent spécifique au projet Eclipse, ce qui n'est pas ce que je veux. J'utilise plusieurs utilitaires Java, tous résidant dans un même projet (ce partage du chemin de classe), et je dois utiliser une configuration spécifique pour certains d'entre eux.
J'ai essayé la substitution de variable et le configurateur Joram, mais rien ne fonctionnait pour moi. C'était probablement ma faute, et je vais le résoudre un jour, mais pour le moment, il me faudrait une solution simple.
OPTION 1: spécifiez l'emplacement du fichier de configuration logback avec la propriété système logback.configurationFile. Cela vous permet en effet d’avoir plusieurs fichiers de configuration par projet. Selon la documentation logback , la valeur de cette propriété peut être une URL, une ressource figurant sur le chemin de classe ou un chemin vers un fichier externe à l'application. Par exemple:-Dlogback.configurationFile=/path/to/config.xml
OPTION 2: utilisez la substitution de variable pour définir le nom du fichier journal avec une propriété système. Par exemple:
<file>/var/tmp/${mycompany.myapplication}.log</file>
-Dmycompany.myapplication=SomeUtility
OPTION 3: définissez le niveau du consignateur avec une propriété système. Cela vous permettra de vous connecter plus/moins. Par exemple:
<logger name="com.mycompany" level="${mycompany.logging.level:-DEBUG}"/>
-Dmycompany.logging.level=INFO
OPTION 4: ajouter/supprimer un générateur d'appels en transmettant un paramètre de ligne de commande de propriété système à Java. Cela vous permettra de vous connecter à différents endroits. Notez que le traitement conditionnel nécessite janino . Par exemple:
<appender-ref>
, en changeant la valeur ref
en un de vos propres <appender>
s, bien sûr:
<if condition="property("mycompany.logging.console").equalsIgnoreCase("true")">
<then><appender-ref ref="STDOUT"/></then></if>
-Dmycompany.logging.console=true
En ce qui concerne les propriétés système, vous les transmettez à Java sous la forme d'arguments -D
, par exemple.Java -Dmy.property=/path/to/config.xml com.mycompany.MyMain
Dans une application Spring Boot, vous pouvez référencer les profils Spring dans le fichier de configuration logback.
Voir cet article .
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<springProfile name="dev">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%d{HH:mm:ss.SSS} | %5p | %logger{25} | %m%n
</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
</root>
</springProfile>
...