Comment utiliser plusieurs configurations avec logback dans un seul projet?

Le fichier de configuration pour logback se trouve sur le classpath, et est donc spécifique au projet Eclipse, ce qui n'est pas ce que je veux. J'utilise plusieurs utilitaires Java, tous résidant dans un seul projet (ce partage du chemin de classe), et j'ai besoin d'utiliser une configuration spécifique pour certains d'entre eux.

J'ai essayé la substitution de variables et le configurateur Joram, mais rien n'a fonctionné pour moi. Ce fut probablement ma faute, et je vais le résoudre un jour, mais pour l'instant, j'avais besoin d'un la solution la plus simple.

36
demandé sur maaartinus 2011-07-15 00:30:34

1 réponses

OPTION 1: spécifiez l'emplacement du fichier de configuration logback avec le logback.configurationFile propriété système. Cela vous permet en fait d'avoir plusieurs fichiers de configuration par projet. Selon la documentation logback , la valeur de cette propriété peut être une URL, une ressource sur le chemin de la classe ou un chemin d'accès à 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 un système propriété. Par exemple:

  1. Votre appender pouvez définir le fichier comme suit:
    <file>/var/tmp/${mycompany.myapplication}.log</file>
  2. et vous pouvez ensuite spécifier la valeur de cette variable lors du lancement de java:
    -Dmycompany.myapplication=SomeUtility

OPTION 3: Définissez le niveau de l'enregistreur avec une propriété système. Cela vous permettra de vous connecter plus/moins. Par exemple:

  1. mettez ceci dans votre fichier de configuration de logback:
    <logger name="com.mycompany" level="${mycompany.logging.level:-DEBUG}"/>
    Par défaut, le package spécifié se connecte au niveau de débogage.
  2. Si vous voulez changer le niveau de journalisation à INFO dans une application spécifique, puis passez ce qui suit à java lors du lancement de cette application:
    -Dmycompany.logging.level=INFO

OPTION 4: Ajouter / Supprimer un appender en passant 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:

  1. mettez ceci dans votre fichier de configuration de logback partout où vous mettriez un <appender-ref>, en changeant la valeur ref à l'un de vos propre <appender>s, bien sûr:
    <if condition="property("mycompany.logging.console").equalsIgnoreCase("true")"> <then><appender-ref ref="STDOUT"/></then></if>
  2. Si vous souhaitez activer cet appender, passez ce qui suit à java lors du lancement de cette application:
    -Dmycompany.logging.console=true

En ce qui concerne les propriétés système, vous les transmettez à java en tant qu'arguments -D, par exemple
java -Dmy.property=/path/to/config.xml com.mycompany.MyMain

56
répondu jtoberon 2017-07-07 16:40:10