2009-11-03 1 views
13

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

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

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

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

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

ответ

23

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

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

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

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