Корневой регистратор находится на вершине иерархии регистратора. Это исключительно в трех направлениях:
- оно всегда существует,
- его уровень не может быть установлен равным нулю
- его нельзя получить по имени.
rootLogger является отцом всех приложений. Каждый включенный запрос на запись в журнал для данного регистратора будет перенаправлен всем добавителям в этом регистраторе, а также выше, в иерархии (включая rootLogger)
Например, если к root logger
добавлен аппендер console
, то все включенные запросы журнала будут по крайней мере печататься на консоли. Если, кроме того, добавление файла добавляется в регистратор, скажем, L
, то включенные запросы ведения журнала для дочерних элементов L
и L's
будут печататься в файле и в console
. Можно изменить это поведение по умолчанию, чтобы накопление аппендера больше не было аддитивным , установив для флага аддитивности значение false .
Из руководства пользователя log4j
Подводя итог:
Если вы не хотите распространять событие ведения журнала на родительские средства ведения журнала (скажем, rootLogger), то добавьте флаг добавления в значение false в этих средствах ведения журнала. В вашем случае:
<logger name="org.springframework.ws.server.endpoint.interceptor"
additivity="false">
<level value="DEBUG" />
<appender-ref ref="payloadAppender" />
</logger>
В стандартном стиле конфигурации log4j (который я предпочитаю XML):
log4j.logger.org.springframework.ws.server.endpoint.interceptor = INFO, payloadAppender
log4j.additivity.org.springframework.ws.server.endpoint.interceptor = false
Надеюсь, это поможет.