[log4j] Problem z logowaniem we właściwe miejsce

0

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?

0

Cześć.
Nie jestem pewien, ale chyba tak jest, sądząc po tym, co wypisuje Ci na ekranie.

Powiedz mi, po co ci kilka loggerów, skoro z kodu wynika, że każdy zapisuje do jednego pliku?

0

Nie jestem przekonany czy aby na pewno w ten sposób należy tworzyć logger i spinać go z appenderem. Czy próbowałeś skonfigurować logger za pomocą pliku log4j.xml/log4j.properties?

1 użytkowników online, w tym zalogowanych: 0, gości: 1