Я использую org.apache.log4j.Logger и хочу отключить отладочные сообщения для htmlunit. Я ничего не делаю, кажется, работает. Я продолжаю получать Http.wire, Http.headers и т. Д. Отладочные сообщения. Я корневой регистратор установлен для отладкиНевозможно отменить HtmlUnit logging
Я попытался размещая эту строку в своем коде:
org.apache.log4j.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(org.apache.log4j.Level.OFF);
Я также попытался размещая эту строку в мой файл log4j.properties:
log4j.logger.com.gargoylesoftware.htmlunit=WARN
Это содержимое моего файла log4j.properties:
log4j.logger.com.gargoylesoftware.htmlunit=ERROR
log4j.logger.org.apache.commons.httpclient=ERROR
# Tell the root lodger what appenders and level to use
log4j.rootLogger=DEBUG, A1, A2
##### Console Appender #####
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n
##### File Appender #####
log4j.appender.A2=org.apache.log4j.FileAppender
log4j.appender.A2.File=/var/log/mylogfile.log
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n
log4j.appender.A2.Append=false
Любая помощь будет оценена по достоинству.
Редактировать 11/15/16 (Добавление кода тест)
import com.gargoylesoftware.htmlunit.*;
import com.gargoylesoftware.htmlunit.html.*;
import org.junit.*;
import static org.junit.Assert.*;
import org.apache.commons.logging.*;
import org.apache.log4j.*;
public class Test01
{
@Test
public void homePage() throws Exception
{
LogFactory.getFactory().setAttribute("com.gargoylesoftware.htmlunit", "org.apache.commons.logging.impl.Log4JLogger");
LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.Log4JLogger");
org.apache.log4j.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.WARN);
org.apache.log4j.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.WARN);
Logger.getRootLogger().setLevel(Level.DEBUG);
Logger.getRootLogger().debug("Start");
WebClient webClient = new WebClient()
HtmlPage page = webClient.getPage("https://google.com");
Logger.getRootLogger().debug("End");
}
Спасибо за помощь. log4j.logger.com.gargoylesoftware.htmlunit = ERROR в файле свойств ничего не делает. Фрагменты кода работают, но он отключает журналы отладки корневого регистратора. Я пробовал SimpleLog, а также Log4JLogger без везения. У меня возникли проблемы с пониманием того, почему параметры в файле log4j.properties не могут устанавливать разные уровни для разных регистраторов. Я обновил свой исходный вопрос с помощью файла log4j.properties, который я использую. – zappullae
BTW. У меня есть та же проблема с авторизацией журналов html Authorize.net. – zappullae
После эксперимента с этим кажется, что используется только корневой регистратор. Установка уровней и атрибутов org.apache.commons.logging.Log и com.gargoylesoftware.htmlunit не влияет. Единственное, что работает, - это установить уровень в файле log4j.properties или выполнить Logger.getRootLogger(). SetLevel (Level.WARN). Оба этих решения влияют на все протоколирование не только отдельных, которые я хотел бы контролировать. Это не может быть так трудно сделать, я что-то упустил? – zappullae