Данные ответы являются хорошими примерами людей, отвечающих на вопросы, которые они даже не понимают. Они просто повторяют то, что слышали или читали в плохой документации, например, в HTTP-клиенте Apache. Что-то типа:
<logger name="org.apache.commons.httpclient">
<level value="warn"/>
</logger>
это то, что нужно сделать, если документация HTTP-клиента Apache была правильной. В таком случае автор этого вопроса сам бы решил проблему. Давать такие плохие ответы как-то оскорбительно.
Проблема в том, что хотя в документации написано:
У каждого класса есть собственный журнал, названный в соответствии с полным именем класса. Например, класс HttpClient имеет журнал с именем org.apache.commons.httpclient.HttpClient. Поскольку все классы следуют этому соглашению, можно настроить ведение журнала контекста для всех классов, используя единый журнал с именем org.apache.commons.httpclient.
это просто неправда.
Лучше, чем дать ответ, показать, как найти его самому. Чтобы найти решение, вы должны сначала включить местоположение в журнале, чтобы увидеть, где происходит журнал. Затем в журналах будет отображаться строка вида:
2013-02-07 15:33:02,369 DEBUG [Some thread name] org.apache.commons.httpclient.Wire.wire(Wire.java:84) - << "[\r]"
Это показывает, что ведение журнала происходит в классе Wire.java, строка 84. Затем вы можете открыть исходники в своей любимой среде IDE и увидеть следующее:
80 if (buffer.length() > 0) {
81 buffer.append("\"");
82 buffer.insert(0, "\"");
83 buffer.insert(0, header);
84 log.debug(buffer.toString()); // Log is happening here
85 }
Переменная log содержит регистратор. Перейдите к месту, где эти переменные получают свое значение:
52 /** Log for any wire messages. */
53 private Log log;
54
55 private Wire(Log log) {
56 this.log = log;
57 }
Все, что вам нужно сделать сейчас, это поставить точку останова на строке 56 и запустить приложение в отладчике. Когда он остановится на строке 56, прочитайте значение журнала. Поскольку это объект типа Log, откройте его и посмотрите на его свойство «name». Вы увидите имя «httpclient». Очевидно, что документация Apache неверна.
Теперь вы можете отключить этот регистратор с помощью:
<logger name="httpclient">
<level value="warn"/>
</logger>
Вывод таков:
По возможности научитесь находить ответ на свой вопрос вместо того, чтобы спрашивать.
Не верьте тому, что все говорят. Именование регистраторов по полному имени класса является соглашением. Как и все условности, никто не обязан ей следовать. Апачи этого не делают.
Не отвечайте на вопрос, когда не знаете ответа. Это только шум.
person
Pierre-Yves Saumont
schedule
07.02.2013