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). Existe-t-il un moyen d’imprimer (à des fins de diagnostic) au moment de l’exécution, le fichier de configuration utilisé par Logback pour s’amorcer?
[edit] Pour clarifier, j'aimerais idéalement une solution qui ne nécessite pas de modifier le fichier de configuration lui-même (puisqu'un fichier JAR tiers mal assemblé, par exemple, peut être récupéré de manière incorrecte et avant la configuration de mon journal. 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 dans la documentation de Logback pour l’impression automatique de l’état (les mentions tout en bas forcent la sortie de l’état), et la propriété logback.statusListenerClass :
En l'absence de messages d'état, il peut être difficile de rechercher un fichier de configuration non autorisé logback.xml, en particulier en production où la source de l'application ne peut pas être modifiée facilement. Pour vous aider à identifier l'emplacement d'un fichier de configuration non autorisé, 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 désactiver la sortie générée automatiquement en cas d'erreur.
Si vous voulez aller profond dans Logback
, vous pouvez faire ce qui 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(String[] 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 imprimera la URL
du fichier de configuration chargé.
vous pouvez définir debug = "true" dans un fichier loback.xml que vous contrôlez comme ceci
<configuration debug="true">
(...)
</configuration
et assurez-vous que le fichier sera utilisé par logback, ajoutez l'argument suivant VM lorsque vous démarrez 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.