Witam,
java: 1.5
serwer: jboss
technologia: log4j używam przy okazji EJB
chcę stworzyć dynamicznie kilka różnych DailyRollingFileAppenderów, aby logować wiadomości do różnych miejsc. Niestety cały czas są wypisywane na konsolę. Stworzyłem nawet prostego beana z wywoływaną metodą loguj:
public void loguj(String logLvl, String msg) {
Logger tmp = LogManager.exists("myTestLogger");
if(tmp == null) {
tmp = Logger.getLogger("myTestLogger");
System.out.println("ZAINICJALIZOWANO LOGGER");
} else {
System.out.println("LOGGER JUZ ISTNIEJE");
}
tmp.removeAllAppenders(); //jesli byla wczesniej instancja tego loggera, to pewnie
//istnieja dla niej stare appendery, ktore trzeba usunac
//zeby sie nie dublowaly
if(logLvl.equals("DEBUG")) {
tmp.setLevel(org.apache.log4j.Level.DEBUG);
} else if(logLvl.equals("INFO")) {
tmp.setLevel(org.apache.log4j.Level.INFO);
} else if(logLvl.equals("WARN")) {
tmp.setLevel(org.apache.log4j.Level.WARN);
} else if(logLvl.equals("ERROR")) {
tmp.setLevel(org.apache.log4j.Level.ERROR);
}
DailyRollingFileAppender appender = new DailyRollingFileAppender();
appender.activateOptions();
appender.setName("A2");
appender.setDatePattern(".yyyy-MM-dd-HH-mm");
appender.setFile("C:/Users/Przemek/Documents/logs/test.log");
appender.setLayout(new PatternLayout());
appender.setImmediateFlush(true);
//BasicConfigurator.configure(appender);
tmp.addAppender(appender);
System.out.println("UTWORZONO LOGGER: " + tmp.getName() + " SCIEZKA: " + ((DailyRollingFileAppender)tmp.getAppender("A2")).getFile().toString());
//zalogowanie odpowiedniego komunikatu
if(logLvl.equals("DEBUG")) {
tmp.debug(msg);
} else if(logLvl.equals("INFO")) {
tmp.info(msg);
} else if(logLvl.equals("WARN")) {
tmp.warn(msg);
} else if(logLvl.equals("ERROR")) {
tmp.error(msg);
}
System.out.println("WIADOMOSC: " + msg);
}
niestety cały czas logowane są dane na STDOUT, a teoretycznie powinny być do pliku. Dlaczego tak się dzieje? Bardzo proszę o pomoc. Oto wynik na konsoli dla przykładowych danych:
16:23:45,606 INFO [STDOUT] ZAINICJALIZOWANO LOGGER
16:23:45,606 INFO [STDOUT] UTWORZONO LOGGER: myTestLogger SCIEZKA: C:/Users/Przemek/Documents/logs/test.log
16:23:45,606 INFO [STDOUT] WIADOMOSC: /02/2010 15:27:36:731, INFO, 6, ccccccccccc, DefaultLogger
16:23:45,609 INFO [STDOUT] LOGGER JUZ ISTNIEJE
16:23:45,609 INFO [STDOUT] UTWORZONO LOGGER: myTestLogger SCIEZKA: C:/Users/Przemek/Documents/logs/test.log
16:23:45,610 INFO [myTestLogger] /02/2010 15:27:36:731, INFO, 6, ccccccccccc, DefaultLogger
16:23:45,610 INFO [STDOUT] WIADOMOSC: /02/2010 15:27:36:731, INFO, 6, ccccccccccc, DefaultLogger
16:23:45,611 INFO [STDOUT] LOGGER JUZ ISTNIEJE
16:23:45,611 INFO [STDOUT] UTWORZONO LOGGER: myTestLogger SCIEZKA: C:/Users/Przemek/Documents/logs/test.log
16:23:45,611 WARN [myTestLogger] /02/2010 15:27:36:731, INFO, 6, ccccccccccc, DefaultLogger
16:23:45,611 INFO [STDOUT] WIADOMOSC: /02/2010 15:27:36:731, INFO, 6, ccccccccccc, DefaultLogger
16:23:45,612 INFO [STDOUT] LOGGER JUZ ISTNIEJE
16:23:45,612 INFO [STDOUT] UTWORZONO LOGGER: myTestLogger SCIEZKA: C:/Users/Przemek/Documents/logs/test.log
16:23:45,612 ERROR [myTestLogger] /02/2010 15:27:36:731, INFO, 6, ccccccccccc, DefaultLogger
16:23:45,612 INFO [STDOUT] WIADOMOSC: /02/2010 15:27:36:731, INFO, 6, ccccccccccc, DefaultLogger
PS. Czy nazwa appendera musi być unikalna w obrębie całej JVM?
czy ktoś mi pomoże?