Вы можете добавить / удалить Appender программно в Log4j:
ConsoleAppender console = new ConsoleAppender(); //create appender
//configure the appender
String PATTERN = "%d [%p|%c|%C{1}] %m%n";
console.setLayout(new PatternLayout(PATTERN));
console.setThreshold(Level.FATAL);
console.activateOptions();
//add appender to any Logger (here is root)
Logger.getRootLogger().addAppender(console);
FileAppender fa = new FileAppender();
fa.setName("FileLogger");
fa.setFile("mylog.log");
fa.setLayout(new PatternLayout("%d %-5p [%c{1}] %m%n"));
fa.setThreshold(Level.DEBUG);
fa.setAppend(true);
fa.activateOptions();
//add appender to any Logger (here is root)
Logger.getRootLogger().addAppender(fa);
//repeat with all other desired appenders
Я бы предложил вам поместить его в init () где-нибудь, где вы уверены, что это будет выполнено раньше всего , Затем вы можете удалить все существующие приложения в корневом журнале с помощью
Logger.getRootLogger().getLoggerRepository().resetConfiguration();
и начать с добавления своего собственного. Для этого вам нужно log4j в курсе classpath.
Примечание. Вы можете использовать любой Logger.getLogger(...)
, который вам нравится добавлять. Я просто взял корневой журнал, потому что он находится в нижней части всех вещей и будет обрабатывать все, что передается через другие приложения в других категориях (если не настроено иначе, установив флаг аддитивности).
Если вам нужно знать, как работает журнал, и как определяется, где записываются журналы , прочитайте это руководство для получения дополнительной информации об этом. Короче:
Logger fizz = LoggerFactory.getLogger("com.fizz")
предоставит вам регистратор для категории «com.fizz». В приведенном выше примере это означает, что все, что было зарегистрировано с ним, будут переданы в консоль и файл appender в корневом журнале. Если вы добавите приложение в Logger.getLogger («com.fizz»). AddAppender (newAppender), то регистрация из fizz
будет обрабатываться всеми добавками из корневого регистратора и newAppender
. Вы не создаете Loggers с конфигурацией, вы просто предоставляете обработчики для всех возможных категорий в вашей системе.