2009-11-03 15 views
13

Ich habe eine automatisierte Integration Testumgebung zu schaffen und möchte die Protokollierung optimieren (die log4j realisiert wird)Programmatically verschiedene Protokolldateien mit log4j

Ich habe eine Reihe von High-Level-Tests, die jeweils mit einer ID und benötigen Sie eine separate Protokolldatei pro Test. Da die Tests zufällig erstellt werden, sind die IDs erst zur Laufzeit bekannt.

Daher möchte ich sicherstellen, dass die Protokollierung in jedem High-Level-Test in die Protokolldatei für diesen Test geschrieben wird.

Ich möchte keine benutzerdefinierten Protokollebenen erstellen und möchte auch nicht, dass die Protokollierung an alle Appender gesendet wird.

Kennt jemand einen Weg, dies zu tun?

Antwort

23

Sie können die log4j-API einfach programmgesteuert aufrufen, z.

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

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

The logger kann wie in diesem Beispiel, oder eine Logger den Baum die Wurzel Loggers sein. Ihr Komponententest kann seinen eigenen Appender während der Aufarbeitung hinzufügen und den Appender während des Abbaus entfernen (unter Verwendung von removeAppender()).

Verwandte Themen