Когда я пытаюсь воссоздать то, что вы делаете, я вижу, что журналы не записываются, но это происходит при использовании уровня DEBUG для генерации событий журнала, а не ERROR.Я изменил приведенный ниже вопрос, чтобы отразить это.
... если я использую режим [DEBUG], он не записывается ни в один файл.
Проблема здесьв том, что ваши регистраторы установлены в режим ERROR, что означает, что они будут принимать события только с уровнем ERROR или FATAL.Регистратор и приложение должны принять событие до того, как сообщение будет зарегистрировано.
Во-вторых, когда я использую ОШИБКУ, он записывает все четыре файла.(debug.error, error.log, HipDebug.log, HipError.log). Почему это так?
У вас есть log4j.additivity.JavaTest=true
, что означает, что любое событие, принятое регистратором JavaTest
, будетотправляется и своим, и дополнительным приложениям своих родительских регистраторов (если только один из них не разрывает цепочку, устанавливая ложное значение аддитивности)
Кроме того, поскольку у вас есть log4j.appender.generalDebug.Threshold=DEBUG
и log4j.appender.HipDebug.Threshold=DEBUG
, эти добавщики будут принимать события уровнейDEBUG, INFO, WARN, ERROR и FATAL.
Когда и как я могу писать только в файлы rootLogger?(только файлы error.log и debug.log)
Я не уверен, что именно вы пытаетесь задать здесь, но вы могли бы отправлять события получателям корневого регистратора, получив корневой регистратор ивызывая соответствующие методы на нем.
Одна заключительная мысль - если это вообще возможно, вы должны перейти на log4j2 , поскольку он предлагает множество улучшений по сравнению с log4j1 и log4j1 достиг конца срока службы.