Программно создавая различные файлы журналов с помощью log4j

У меня есть тестовая жгута для автоматической интеграции и вы хотите упорядочить ведение журнала (что реализовано с помощью log4j)

У меня есть ряд тестов высокого уровня, каждый из которых имеет идентификатор и требует файл отдельный для каждого теста. Поскольку тесты создаются случайным образом, идентификаторы неизвестны до времени выполнения.

Поэтому я хотел бы убедиться, что регистрация в каждом высоком уровне теста выписана в файл журнала для этого теста.

Я не хочу создавать собственные уровни журналов, и я не хочу, чтобы ведение журнала отправлялось всем приятелям.

Кто-нибудь знает способ сделать это?

Ответ 1

Вы можете легко вызывать API log4j программно, например.

FileAppender appender = new FileAppender();
// configure the appender here, with file location, etc
appender.activateOptions();

Logger logger = getRootLogger();
logger.addAppender(appender);

logger может быть корневым регистратором, как в этом примере, или любым регистратором по дереву. Ваш unit test может добавить свой пользовательский appender во время steup и удалить appender (используя removeAppender()) во время срыва.