| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Отключить логгер в готовом компоненте |
| Автор: maddoc 27.6.2010, 13:34 | ||||
Есть сторонний jar. В нем объявлен логгер. По умолчанию он выключен .
Но при вызове некоторых методов внутри он включается
и начинает слать сообщения в консоль. как его вырубить не трогая jar? |
| Автор: Skipy 28.6.2010, 09:59 | ||
Опять вызвать
Логгеры в пределах JVM можно получать по их имени из любой точки. Я вообще делал JMX bean для управления уровнями логирования в runtime. |
| Автор: maddoc 28.6.2010, 11:10 |
| Skipy, это и первокурснику ясно, но вызов методов с включением логгера происходит многократно и он переписывает мои выбор |
| Автор: Skipy 28.6.2010, 12:58 |
| Так Вам просто надо вырубить определенный логгер? Делаете аппендер с типом org.apache.log4j.varia.NullAppender, выставляете additivity=false, чтобы не писал в родительский. Связываете нужный Вам логгер с этим аппендером. Всё. P.S. Насчет log4j (надеюсь, у Вас он?) можно почитать вот это: http://www.skipy.ru/useful/logging.html |
| Автор: jk1 28.6.2010, 13:12 | ||
maddoc, при использовании java.util.logging можно использовать фильтр:
после этого он уже ничего никуда не выведет. |
| Автор: maddoc 29.6.2010, 09:39 |
| jk1, выводит |
| Автор: ivanovpv 29.6.2010, 09:42 |
| Ну а добавить запись в log4j.properties? |
| Автор: maddoc 29.6.2010, 11:13 | ||
| ivanovpv, Skipy,
|
| Автор: jk1 29.6.2010, 11:37 | ||
HttpClient использует JCL для логгирования. Возможно, у Вас срабатывает его дефолтный логгер, для него можно попробовать подкрутить соответствующие property:
|
| Автор: ivanovpv 30.6.2010, 08:23 | ||
Попробуй объявить корневой логгер нулевым, а те которые нужны присобачить врукопашную к консолю. Тогда в пустоту уйдут все логи, кроме тех которые вручную присоединены к ненулевому аппендеру
|
| Автор: Skipy 30.6.2010, 11:06 | ||||||
Вообще-то, имхо, должно быть так:
Вы же не указали логгеру, какой аппендер использовать! |
| Автор: maddoc 30.6.2010, 12:59 | ||||
| Skipy, sorry Я писал по памяти, оригинал
Добавлено @ 13:04 ivanovpv,
выводит Осталось проверить способ jk1, |
| Автор: ivanovpv 1.7.2010, 08:56 | ||
Надо убрать 3 последние строчки!
Если не указан аппендер он будет использовать корневой аппендер, который уже объявлен нулевым |
| Автор: maddoc 1.7.2010, 11:55 |
| выводит |
| Автор: LSD 1.7.2010, 12:09 |
| maddoc, ты бы для начала написал что за логгер использует эта твоя библиотека |
| Автор: maddoc 1.7.2010, 13:49 |
| дело в том, что мне по наследству достался огромныи проект, а это в ОРМ нем. логгер java.util.logging |
| Автор: Skipy 1.7.2010, 14:46 | ||
!!!!! МАТЬ-МАТЬ-МАТЬ!!! Пятый день толпа разработчиков пытается отключить лог через JUL настройками Log4J!!! Автор, а ведь я спрашивал - у Вас Log4J или нет? Так, сейчас закончу материться, пойду искать рецепт для JUL... UPD. В общем, принцип тот же. Делаете NullHandler на основе java.util.logging.Handler, прописываете этот handler вашему логгеру. Как конфигурировать JUL - читаете тут: http://java.sun.com/javase/6/docs/technotes/guides/logging/overview.html |
| Автор: jk1 1.7.2010, 14:52 | ||
ОРМ? Это случаем не Hibernate? |
| Автор: maddoc 1.7.2010, 15:20 |
| Skipy, "у меня" log4j + Slf4j а эта хрень из ORM ActiveObjects + есче несколько подпроектов в которих свои логеры, а я это все разгребаю и пытаюсь запустить |
| Автор: LSD 1.7.2010, 15:40 |
| Если это и вправду java.util.logging.Logger то метод предложенный jk1 должен работать. Если он не работает, значит или это не java.util.logging.Logger или ты что-то не так делаешь. |
| Автор: jk1 1.7.2010, 21:10 |
| maddoc, Раз используется Slf4j, то он может пользоваться своим дефолтным логгером, если найдет его в classpath. Такой логгер просто будет выводить в System.out все логи вне зависимости от любых конфигов. Убедитесь, что в вашем случае в classpath не попадает slf4j-simple.jar, который и является упомянутым логгером. |
| Автор: ivanovpv 2.7.2010, 07:57 |
А вот за это надо снижать репутацию! |
| Автор: Skipy 2.7.2010, 09:24 | ||
Ну да, у них JUL. И в коде действительно есть Logger.getLogger("...").setLevel(Level.INFO). Руки оторвать по самую голову. В общем, пишите глухой аппендер и этот логгер на него. |
| Автор: maddoc 12.7.2010, 10:57 | ||
| спасибо всем. неделю болел, и не смотрел ответы. парралельно написал такои код
помогло. есчe раз спасибо, тему закрываю |