JBoss 6 - ostrzeżenie log4j po stronie klienta

0

Mam drobny problem z serwerem JBoss 6. Gdy aplikacja kliencka uruchamia metody biznesowe EJB na tym serwerze to w jej konsoli (po stronie klienta) pojawiają się ostrzeżenia związane z log4j:

log4j:WARN No appenders could be found for logger (org.jnp.interfaces.TimedSocketFactory).
log4j:WARN Please initialize the log4j system properly.

Potem metody EJB się wykonują i wszytko ładnie działa ale denerwują mnie te logi ostrzeżeń gdyż pojawiają się przy każdym projekcie klienckim który ma coś wykonywać na serwerze. Jak te same projekty (EJB, MD EJB) przeniosę na JBoss 5 to wszystko działa bez żadnych ostrzeżeń.

Czytałem w internecie że to może być wina braku jakiegoś pliku properties w classpath: jboss-log4j.xml lub log4j.xml ale za bardzo nie wiem gdzie ten plik miałby się znaleźć i czemu go w ogóle brakuje.

0

Podejrzewam że w metodzie EJB używasz bezpośrednio log4j czyli klasy org.apache.log4j.Logger i do tego załączasz log4j.jar, ale nie tworzysz pliku konfiguracyjnego log4j.properties (mowa cały czas o twojej aplikacji, nie o konfiguracji JBossa). Jeśli tak to czytaj dalej...

JBoss 6 sam posiada system logowania, który konfigurujesz plikiem jboss-logging.xml (znajdujący się w katalog deploy)

Nie wiem jak to powinno być poprawnie, ale tak na moje oko użyj standardowego Loggera czyli java.util.logging.Logger i wtedy to co on wypluje JBoss obsłuży zgodnie ze swoją konfiguracją.

Albo do swojej aplikacji dodaj plik log4j.properties i skonfiguruj go wedle potrzeby, tylko że to będzie jakoby drugi niezależny system logowania.

Jeśli napisałem głupot może ktoś coś jeszcze wyjaśni, sam się chętnie dowiem jak poprawnie obsługiwać logi

0

Wiesz co, niczego takiego sam nie załączałem. Może zrobiło to Eclipse ale jeśli chodzi o importy to w moim EJB jak i kliencie nie ma zaimportowanej klasy którą wymieniłeś. Są tylko standardowe klasy javax.ejb

Nie mam też do projektu EJB dołączonych żadnych dodatkowych bibliotek. Jest tylko JRE System Library (podstawowa) i JBoss 6.x Runtime (biblioteka JEE JBossa).
Ale właśnie też czytałem gdzieś że to wina szukania pliku konfiguracyjnego jboss-log4j.xml. U mnie nie ma tego pliku w instalkach binarnych JBoss 6 i 6.1 JBoss 5 ma go w katalogu server\rodzaj_servera\conf . Ale zwykłe, chamskie przegranie go z JBoss 5 do 6 nie rozwiązuje sprawy (sprawdzałem).

0

umieść plik log4j.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
	<!--
		This is a sample log4j configuration file. It should be written to a
		file called "log4j.xml" and must appear in the classpath.
	-->

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

	<!-- Output messages to the console -->
	<appender name="console" class="org.apache.log4j.ConsoleAppender">

		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d{yyyyMMdd HH:mm:ss} %-5p %C{1}() - %m%n" />
		</layout>
	</appender>

	<!--
		Set the level appropriately: levels are: debug, info, warn, error,
		fatal
	-->
	<root>
		<priority value="info" />
		<appender-ref ref="console" />
	</root>

</log4j:configuration>

bezpośrednio w paczce z aplikacją.

0

Mógłbyś sprecyzować co znaczy w "paczce" bo przetestowałem wszystkie możliwości i nie ma różnicy wstawiałem go i do projektu EJB i projektu klienta aplikacyjnego. Plik wstawiam do workspace Eclipse bo serwer odpalam właśnie pod Eclipse. Może zły katalog wybieram?
Próbowałem go wstawić do katalogu EJB (np MyEJB_1) potem do katalogu "ejbModule", potem w środku mam katalog "pack1" z plikami javy tego ejb - też próbowałem. No i wstawiłem jeszcze do "META-INF". Bez rezultatu. Opuściłem coś jeszcze?

0

Po spakowaniu projektu do EARa otwórz go zipem i sprawdź czy plik się dodał.

0

Dzięki, wyszło. : )

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