J'utilise une bibliothèque héritée qui écrit les journaux en utilisant log4j. Mon fichier log4j.properties par défaut dirige le journal vers la console, mais dans certaines fonctions spécifiques de mon programme principal, je souhaite désactiver la journalisation (de toutes les classes).
J'ai essayé ceci:
Logger.getLogger(BasicImplementation.class.getName()).setLevel(Level.OFF);
où "BasicImplementation" est l'une des principales classes de journalisation, mais cela n'a pas fonctionné - les journaux sont toujours écrits sur la console.
Voici mon log4j.properties:
log4j.rootLogger=warn, stdout
log4j.logger.ac.biu.nlp.nlp.engineml=info, logfile
log4j.logger.org.BIU.utils.logging.ExperimentLogger=warn
log4j.appender.stdout = org.Apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.Apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %-5p %d{HH:mm:ss} [%t]: %m%n
log4j.appender.logfile = ac.biu.nlp.nlp.log.BackupOlderFileAppender
log4j.appender.logfile.append=false
log4j.appender.logfile.layout = org.Apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern = %-5p %d{HH:mm:ss} [%t]: %m%n
log4j.appender.logfile.File = logfile.log
Donc, vous avez 3 enregistreurs définis, y compris la racine:
log4j.rootLogger=warn, stdout
log4j.logger.ac.biu.nlp.nlp.engineml=info, logfile
log4j.logger.org.BIU.utils.logging.ExperimentLogger=warn
Malheureusement, pour les désactiver par programme, vous devez spécifier ALL OF THEMM dans le code:
Logger.getLogger("ac.biu.nlp.nlp.engineml").setLevel(Level.OFF);
Logger.getLogger("org.BIU.utils.logging.ExperimentLogger").setLevel(Level.OFF);
Logger.getRootLogger().setLevel(Level.OFF);
Voici comment le réinitialiser à ce qui est défini dans le fichier de configuration.
Si vous voulez obtenir un silence parfait (comme pour un outil de ligne de commande silencieux), vous pouvez toujours utiliser le NullAppender .
Logger.getRootLogger().removeAllAppenders();
Logger.getRootLogger().addAppender(new NullAppender());
Vous pouvez utiliser
Logger.getRootLogger().setLevel(Level.OFF);
désactiver toute journalisation en code Java
Peut-être comme ça:
Logger.getRootLogger().shutdown();
Dans la version 1.8 de Java.util.logging.Logger, le formulaire correct est le suivant:
Logger.getLogger("").setLevel(Level.OFF);