То, как работает цепочка Log4j, немного нелогично (по крайней мере для меня). См. руководство по log4j . Если уровень запроса равен или превышает порог наиболее конкретного совпадающего регистратора, он принимается. Как только запрос принят, он обрабатывается всей цепочкой предков независимо от их порогов!
Чтобы подавить поведение цепочки, добавьте:
log4j.additivity.SGSearch=false
Это приведет к тому, что запросы, обрабатываемые регистратором SGSearch, больше не будут передаваться по цепочке.
Еще одно предложение: не называйте логгер и аппендер одинаковыми, потому что когда-нибудь в будущем вы или коллега их перепутаете. Имя регистратора должно указывать, какой тип ведения журнала обрабатывается, имя аппендера должно указывать, куда ведется регистрация. Поэтому в этом случае я думаю, что «SGSearch» может быть именем регистратора, а appender должен называться как «LocalSysLog».
Кстати: по моему мнению, вы поступаете правильно, ограничивая корневой регистратор высоким порогом и снижая его для определенных регистраторов. Это позволяет избежать беспорядка в громких библиотеках (у Apache есть несколько печально известных).