Can't turn off HtmlUnit logging messages

后端 未结 7 2039
悲哀的现实
悲哀的现实 2020-12-28 08:50

I\'m using HtmlUnit to interact with a web page that interacts with the server via Ajax. Soon after the Ajax code starts, HtmlUnit produces these two log messages:

相关标签:
7条回答
  • 2020-12-28 09:04

    I too had issues with this.. The answer depends on what logging system commons-logging is using under the hood. (since common-logging is just a wrapper). See the following http://commons.apache.org/proper/commons-logging/guide.html#Configuring_The_Underlying_Logging_System

    The attribute you mention above (org.apache.commons.logging.simplelog.defaultlog) should only be valid if the simple logger is been used. If you are running on JDK 1.4 or higher however it should default to using the JDK logging. In which case it defaults to using the lib/logging.properties from the JRE install location.

    In my case I had Log4j in the classpath, so it defaulted to that.

    To take away the randomness of all this you can explicitly set the Logger yourself. Create a commons-logging.properties file in the classpath and pass in the logger to use e.g.

    # JDK Logging
    #org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
    # Log4j logging (also required log4j.jar to be in classpath)
    org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
    

    For log4j, adding the following the log4j.properties stops the warnings from HtmlUnit.

    log4j.logger.com.gargoylesoftware.htmlunit=ERROR
    
    0 讨论(0)
  • 2020-12-28 09:04

    I am using Htmlunit 2.13, and following code is working to trunoff warnings.

    LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");
    java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
    java.util.logging.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.OFF);
    
    0 讨论(0)
  • 2020-12-28 09:05

    Add this into your code:

    LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");  
    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("org.apache.http.client.protocol.ResponseProcessCookies").setLevel(Level.OFF);
    

    The last line will turn off most of the logs that is happening due to the Cookies getting accepted or rejected at the target site.

    0 讨论(0)
  • 2020-12-28 09:07

    Try putting this in your code:

    LogManager.getLogManager().reset();
    
    0 讨论(0)
  • 2020-12-28 09:10

    You can also use:

    org.apache.log4j.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(org.apache.log4j.Level.FATAL);
    java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(java.util.logging.Level.SEVERE);
    
    0 讨论(0)
  • 2020-12-28 09:15

    Try by writing your own log4j config file, and making htmlunit use it with the java option:

    -Dlog4j.configuration=file:///my/conf/log4j.properties

    Then in your log4j.properties:

    log4j.logger.com.gargoylesoftware.htmlunit=error
    
    0 讨论(0)
提交回复
热议问题