Selenium molti log (Come rimuovere)

Ho provato il Selenium 3.0.1 con Firefox 48.

E ho già provato il seguente codice:

java.util.logging.Logger.getLogger ( “com.gargoylesoftware.htmlunit”) setLevel (Level.OFF).; java.util.logging.Logger.getLogger ( “org.apache.commons.httpclient”) setLevel (Level.OFF).; java.util.logging.Logger.getLogger (ProtocolHandshake.class.getName ()) setLevel (Level.OFF).;

ma una volta che ho eseguito i soliti test su Netbeans , … i log sono ancora in uscita:

Dec 02, 2016 9:17:53 AM org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end Dec 02, 2016 9:17:57 AM org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Detected dialect: OSS 

Qualche idea per risolvere questo?

    Devi mettere i tuoi logger in memoria o configurare un file di configurazione logging.properties . Dai documenti java.util.logging.Logger :

    Gli oggetti di logger possono essere ottenuti tramite chiamate su uno dei metodi di fabbrica di getLogger. Questi creeranno un nuovo Logger o restituiranno un Logger esistente idoneo. È importante notare che il logger restituito da uno dei metodi factory getLogger può essere garbage collection in qualsiasi momento se non viene mantenuto un forte riferimento al Logger.

    Quando viene restituito un nuovo logger, il livello di log è determinato da LogManager che, per impostazione predefinita, utilizza le impostazioni da un file logging.properties . Nel tuo esempio, è ansible vedere quanto segue:

    1. Chiama su getLogger crea un nuovo logger e imposta il livello da LogManager.
    2. Il tuo codice imposta il livello del logger su OFF.
    3. GC esegue e distrugge il tuo logger insieme alle impostazioni appena applicate.
    4. Selenium chiama getLogger e crea un nuovo logger e imposta il livello da LogManager.

    Ecco un esempio di test per dimostrare il punto:

      public static void main(String[] args) { String name = "com.gargoylesoftware.htmlunit"; for (int i = 0; i < 5; i++) { System.out.println(Logger.getLogger(name).getLevel()); Logger.getLogger(name).setLevel(Level.OFF); System.runFinalization(); System.gc(); System.runFinalization(); Thread.yield(); } } 

    Quale emetterà null invece di OFF .

    Se si blocca il logger mantenendo un riferimento forte, il passaggio n. 3 non avviene mai e Selenium dovrebbe invece trovare il registratore creato che ha il livello impostato su OFF.

     private static final Logger[] pin; static { pin = new Logger[]{ Logger.getLogger("com.gargoylesoftware.htmlunit"), Logger.getLogger("org.apache.commons.httpclient"), Logger.getLogger("org.openqa.selenium.remote.ProtocolHandshake") }; for (Logger l : pin) { l.setLevel(Level.OFF); } }