Comment déterminer quelle source de configuration de journal Logback est réellement utilisée?

log4j a une propriété, log4j.debug , qui fournira utilement à l’utilisateur une indication du fichier de configuration réellement utilisé pour configurer le système de journalisation.

Je n’ai pas été en mesure de trouver quoi que ce soit d’équivalent avec le cadre de journalisation Logback (autrement supérieur). Y a-t-il un moyen d’imprimer (à des fins de diagnostic) à l’exécution, quel fichier de configuration Logback a utilisé pour démarrer lui-même?

[edit] Pour clarifier, je voudrais idéalement une solution qui ne nécessite pas de modifier le fichier de configuration lui-même (un JAR tiers mal assemblé, par exemple, peut être mal saisi, et avant ma configuration de restauration) XML).

Vous pouvez définir une propriété système Java pour générer les informations de débogage Logback:

 java -Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener 

Ceci est expliqué plus en détail par la documentation Logback pour l’impression automatique de l’état (tout en bas mentionne la sortie du statut forcé) et la propriété logback.statusListenerClass :

En l’absence de messages d’état, le suivi d’un fichier de configuration logback.xml non autorisé peut s’avérer difficile, en particulier dans la production où la source de l’application ne peut pas être facilement modifiée. Pour vous aider à identifier l’emplacement d’un fichier de configuration non fiable, vous pouvez définir un StatusListener via la propriété système “logback.statusListenerClass” (définie ci-dessous) pour forcer la sortie des messages d’état. La propriété système “logback.statusListenerClass” peut également être utilisée pour couper la sortie générée automatiquement en cas d’erreurs.

Si vous souhaitez approfondir Logback , vous pouvez procéder comme suit:

 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.core.joran.util.ConfigurationWatchListUtil; public class Main { private static final Logger logger = LoggerFactory.getLogger(Main.class); public static void main(Ssortingng[] args) throws Exception { LoggerContext loggerContext = ((ch.qos.logback.classic.Logger)logger).getLoggerContext(); URL mainURL = ConfigurationWatchListUtil.getMainWatchURL(loggerContext); System.out.println(mainURL); // or even logger.info("Logback used '{}' as the configuration file.", mainURL); } } 

Il affichera l’ URL du fichier de configuration chargé.

vous pouvez définir debug = “true” dans un fichier loback.xml que vous contrôlez comme ceci

  (...)  

et assurez-vous que le fichier va être utilisé par logback append l'argument suivant VM au démarrage de votre programme:

 -Dlogback.configurationFile=/path/to/yourlogback.xml 

Cela ne répond pas vraiment à votre question mais vous donne une solution de contournement.

Pas très scientifique, mais ça marche si vous voulez juste une confirmation rapide.

J’ai simplement changé le modèle d’entrée de journal et observé si cela avait changé ou non dans mon fichier console / journal.