2009-11-03 3 views
13

mam zautomatyzowanego uprzęży testu integracji i chciałbyś usprawnić rejestrowanie (który jest realizowany przy użyciu log4j)Programowo tworzenia różnych plików dziennika przy użyciu log4j

Mam liczbę testów na wysokim poziomie, każdy z identyfikatorem i wymagać oddzielnego pliku dziennika o wartości . Ponieważ testy są tworzone losowo, identyfikatory nie są znane przed uruchomieniem.

Dlatego chcę się upewnić, że rejestrowanie w ramach każdego testu wysokiego poziomu jest zapisywane w pliku dziennika dla tego testu.

Nie chcę tworzyć niestandardowych poziomów logowania, nie chcę też, aby rejestrowanie było wysyłane do wszystkich aplikacji.

Czy ktoś wie, jak to zrobić?

Odpowiedz

23

Możesz łatwo wywołać programowo API log4j, np.

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

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

The logger może być rejestrator korzeń jak w tym przykładzie, lub dowolny rejestrator w dół drzewa. Twój test jednostki może dodać swojego niestandardowego aplikanta podczas steupu i usunąć appendera (używając removeAppender()) podczas rozłączania.