Дадените отговори са добри примери за хора, отговарящи на въпроси, които дори не разбират. Те просто повтарят това, което са чули или прочели в лоша документация като тази от 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>
Изводът е:
Когато е възможно, научете се да намирате отговор на собствения си въпрос, вместо да питате.
Не вярвайте на това, което всички казват. Наименуването на регистраторите с пълно квалифицирано име на клас е конвенция. Както всички конвенции, никой не е длъжен да я спазва. Apache не го правят.
Не отговаряйте на въпрос, когато не знаете отговора. Това е само шум.
person
Pierre-Yves Saumont
schedule
07.02.2013