2009-09-07 8 views
13

Chcę programowo utworzyć nowy program log4j ConsoleAppender i dodać go jako program dołączający do programu rejestrującego - jak poprawnie utworzyć instancję - za pomocą poniższych czynności wydaje się, że narzędzie log4j narzeka - jakie setery są potrzebne do skonfigurowania go poprawnie ?Jak utworzyć nowy log4j ConsoleAppender w kodzie w przeciwieństwie do config?

// log4j complains of "No output stream or file set for the appender named [null]." 
logger.addAppender(new ConsoleAppender()); 

Przypuszczalnie jest to przypadek, który wie, co ustawić na konsoli ConsoleAppender, ale nie mogę tego rozgryźć. Zakładam, że jest jakiś sposób na uzyskanie domyślnego układu. Chcę tylko standardowego ConsoleAppendera, który dołącza do SysOut. Wszelkie wskazówki są mile widziane, dzięki.

Odpowiedz

28

Musisz ustawić Writer na aplikatorze (a następnie także Layout, aby uniknąć następnego błędu, który zobaczysz.) Oznacza to, że nie możesz użyć anonimowej instancji, ponieważ będziesz potrzebować użyj seterów, aby skonfigurować appender. na przykład

ConsoleAppender ca = new ConsoleAppender(); 
ca.setWriter(new OutputStreamWriter(System.out)); 
ca.setLayout(new PatternLayout("%-5p [%t]: %m%n")); 
logger.addAppender(ca); 

Ponadto, można ustawić nazwę appender z:

ca.setName("My appender"); 
4

Wydaje się to być knownissue w log4j. Powinieneś być w stanie to naprawić, dzwoniąc pod numer activateOptions, zanim dodasz go do rejestratora lub używając sparametryzowanego konstruktora dla ConsoleAppender.

Jaką wersję używasz? Błąd wydaje się istnieć w dość starej wersji.

Powiązane problemy