Есть идеи, как можно включить и выключить вход и выход для определенной категории / регистратора без необходимости перезапуска приложения?
В предыдущем абзаце вы сказали, чточто вы уже сделали это, установив приоритет «OFF».
Если я вас правильно понимаю, то все, что вы описали, - это поведение log4j.Вам следует потратить некоторое время на log4j руководство , чтобы понять, как работают регистраторы и приложения.Вы, кажется, неправильно ожидаете, что один и тот же регистратор может быть настроен на два разных приоритета / уровня.Это не так, как это работает.Если у вас есть конкретные вопросы, кроме тех, которые я цитировал, задавайте их явно.
Обновление: На основании вашего обновления вам все равно необходимо прочитать руководство по log4j.(Это действительно короткий и легкий для чтения.) У вас есть Logger с именем "com.ourinternalpackage.somesubpackage.SomeClass".Есть только один из них, и независимо от того, указали ли вы его явно в файле конфигурации или нет, он существует, потому что где-то ваш код вызывает или заставляет вызываться Logger.getLogger(SomeClass.class)
.
Ваш единственный Logger может иметь только один приоритет.Когда вы определяете <category name="com.ourinternalpackage.somesubpackage.SomeClass" ...
, его приоритет исходит оттуда, потому что он точно соответствует Logger.Если вы не определили точное соответствие, то ваш Logger наследует свой приоритет от ближайшего предка, который равен <category name="com.ourinternalpackage" ...
.Таким образом, когда вы добавляете точное совпадение и устанавливаете его в «ВЫКЛ», ожидаемое (и демонстрируемое) поведение приводит к отключению всех выходных данных этого регистратора.
Итак, все же ответ на ваш вопрос"Ты уже делаешь это."То есть вы уже включаете и выключаете вход в систему для определенного регистратора.Просто у вас неверное представление о том, что такое Logger.Вы думаете, что у вас есть два регистратора, когда у вас есть только один.Одним из возможных решений вашей проблемы было бы создание двух регистраторов.Тогда вы можете контролировать их индивидуально, как вы пытаетесь.Если вы создадите один файл с именем «com.ourinternalpackage.somesubpackage.SomeClass» и один с именем «debug.com.ourinternalpackage.somesubpackage.SomeClass», то вы создадите прецедент для префикса отладочных регистраторов с помощью «debug», и вы сможете контролировать своивесь набор отладочных регистраторов с одной записью конфигурации: <category name="debug" ...
.