Найти источник / происхождение операторов регистрации log4j? - PullRequest
1 голос
/ 16 декабря 2011

У меня есть приложение Java EE, работающее под Glassfish.

После некоторых недавних изменений мы начали видеть множество утверждений в наших журналах:

[#|2011-12-16T11:20:27.007-0800|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=19;_ThreadName=Thread-62;|2011-12-16 11:20:27,007 DEBUG org.apache.commons.httpclient.HttpConnection[Thread-62] - enter HttpConnection.closeSockedAndStreams()
|#]

[#|2011-12-16T11:20:32.007-0800|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=19;_ThreadName=Thread-62;|2011-12-16 11:20:32,007 DEBUG org.apache.commons.httpclient.HttpConnection[Thread-62] - enter HttpConnection.close()

Мы установили log4j.properties в попытке заставить замолчать эти

log4j.logger.org.apache.commons.httpclient=WARN

Но это не работает. Как я могу найти источник или происхождение этих записей журнала? То, что я хочу, похоже на трассировку стека, которая показывает мне, какой код вызывается для вызова этого оператора журнала.

Может быть, что-то здесь поможет? http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

Что более важно, как я могу закрыть эти заявления? Они загрязняют наши журналы.

Ответы [ 2 ]

1 голос
/ 16 декабря 2011

Поскольку в вашем классе, очевидно, есть что-то еще, что переопределяет вашу настройку , вы можете затем взять регистратор и вернуть его обратно. Что-то вроде:

import org.apache.log4j.*;
...
Logger offendingLogger = Logger.getLogger("org.apache.commons.httpclient.HttpConnection");
offendingLogger.setLevel(Level.WARN);
0 голосов
/ 22 декабря 2011

Решение этой проблемы намного проще, чем я ожидал.

Я обнаружил, что могу передать этот аргумент -Dlog4j.debug=true в JVM. Это заставит log4j сказать мне, откуда он загружает свою конфигурацию.

Это выглядит так:

log4j: Using URL [jar:file:/C:/Sun/GF2/domains/domain1/applications/j2ee-apps/MyProject/lib/omar.jar!/log4j.properties] for automatic log4j configuration.|#]
...
Parsing for [root] with value=[trace, stdout, R].|#]

Я обнаружил, что JAR в моем classpath был упакован с файлом log4j.properties (SLOPPY!), В котором корневому логгеру присвоено значение TRACE.

...