Когда NeXT определяли NextStep API (в противоположность операционной системе NEXTSTEP), они использовали префикс NX, как в NXConstantString. Когда они писали спецификацию OpenStep с Sun (чтобы не быть перепутанным с операционной системой OPENSTEP), они использовали префикс NS, как в NSObject.
Вам необходимо установить additivity = false
, IIRC. Из руководства log4j :
Каждый разрешенный запрос на ведение журнала для данный регистратор будет перенаправлен всем дополнения в этом регистраторе как приложения выше в иерархия. Другими словами, добавители наследуются аддитивно от иерархия логгеров. Например, если консольное приложение добавлено в корень logger, затем все включили ведение журнала запросы будут, по крайней мере, напечатаны на консоль. Если дополнительно файл appender добавлен в регистратор, скажем C, затем включил запросы на ведение журнала для C и дети C будут печатать в файле и на консоли. Возможно переопределить это поведение по умолчанию, чтобы накопление appender больше не добавка путем установки аддитивности значение false.
Попробуйте следующее:
log4j.rootLogger=DEBUG,stdout
log4j.logger.notRootLogger=DEBUG,somewhereelse
log4j.additivity.notRootLogger=false
Хмм, следовало бы более внимательно прочитать краткое введение к log4j
log4j.additivity.notRootLogger=false
исправляет его, потому что он наследует дополнения от регистраторов над ним в иерархии, а корневой регистратор, очевидно, находится наверху иерархии.