moin,
habe ein Problem mit Log4j und steh damit zielmich im Wald. Wir nutzen Log4J üblicherweise für Java Apps, die auf Apache Cocoon aufsetzen, das ganze natürlich auf dem Tomcat.
Nun habe ich da eine JSP App. Unter WEB-INF/lib habe ich eine Java Klasse, die u.a. auch das Logging besorgen soll. Die Klasse selbst soll loggen können, die Loggingmethode soll man auch von aussen per Instanz nutzen können.
Unter WEB-INF/lib liegt log4j-1.2.14.jar. Unter WEB-INF/ iegt die log4j.xml, applicationContext.xml und web.xml. Meine Javaklasse läuft, bis auf das Logging, wunderprächtig.
Die Logfiles, die in der log4j.xml angegeben sind, werden beim Start von tomcat selbsttätig angelegt in allen 3 gewünschten Loglevels. Insofern vermute ich, daß meine log4j.xml so nicht ganz falsch ist.
Wir hatten sogar den Fall, daß meine App zwar gelogt hat, aber in ganz andere Dateien als vorgesehen. Ich hatte unter WEB-INF/lib eine Klasse liegen, die dort überhaupt nichts verloren hatte, aber ihr eigenes Logging mitgebracht hatte. Ich habe diese Lib entfernt, naja jetzt logt er gar nicht mehr.
Das Logging in meiner Klasse geschieht wie folgt (Namen von Klassen, Methoden musste ich wegen Geheimhaltung ändern):
Wobei myApplicationLog() vorher void war, ich habe sie eigens zum Debuggen String returnen lassen. Die angegebenen Klassen von apache.commons.* liegen freilich in der WEB-INF/lib
Ich habe die einzelnen Levels isInfoEnabled(), isWarnEnabled(), isErrorEnebled() mal überprüft - es ist alles enabled. Meine definierten Logfiles werden wie gesagt beschrieben. Allerdings nur mit Start- und sonstigen allgemeinen Meldungen des Tomcat, nicht mit denen wofür sie gedacht waren. Es wäre auch schön, wenn ich den ganzen 'Müll' von Tomcat aus meinen Logfiles heraushalten könnte, die schreibt er ja ohnehin in catalina.out usw.
Woran kann es liegen, wo soll ich ansetzen, nachschauen?
Eine andere Strategie wäre, die Struktur der "fremden" Klasse, die ja durchaus gelogt hatte, zu analysieren und meine Klasse daraufhin nachzubauen, wie wäre das?
Danke, Gruß
habe ein Problem mit Log4j und steh damit zielmich im Wald. Wir nutzen Log4J üblicherweise für Java Apps, die auf Apache Cocoon aufsetzen, das ganze natürlich auf dem Tomcat.
Nun habe ich da eine JSP App. Unter WEB-INF/lib habe ich eine Java Klasse, die u.a. auch das Logging besorgen soll. Die Klasse selbst soll loggen können, die Loggingmethode soll man auch von aussen per Instanz nutzen können.
Unter WEB-INF/lib liegt log4j-1.2.14.jar. Unter WEB-INF/ iegt die log4j.xml, applicationContext.xml und web.xml. Meine Javaklasse läuft, bis auf das Logging, wunderprächtig.
Die Logfiles, die in der log4j.xml angegeben sind, werden beim Start von tomcat selbsttätig angelegt in allen 3 gewünschten Loglevels. Insofern vermute ich, daß meine log4j.xml so nicht ganz falsch ist.
Wir hatten sogar den Fall, daß meine App zwar gelogt hat, aber in ganz andere Dateien als vorgesehen. Ich hatte unter WEB-INF/lib eine Klasse liegen, die dort überhaupt nichts verloren hatte, aber ihr eigenes Logging mitgebracht hatte. Ich habe diese Lib entfernt, naja jetzt logt er gar nicht mehr.
Das Logging in meiner Klasse geschieht wie folgt (Namen von Klassen, Methoden musste ich wegen Geheimhaltung ändern):
Java:
import org.apache.commons.logging.Log; // dazu zählt wohl auch log4j ..?
...
String logprefix = ""; // logprefix wird vor dem Logging u.a. mit Usernamen versehen...
public class myApplication extends AbstractAction {
...
// Logging
Log logger = this.getLogger();
public String myApplicationLog(String level, String logmsg) {
if (level.toLowerCase().equals("info")) {
if (logger.isInfoEnabled())
logger.info(logprefix + logmsg);
else
return "logger: 'info' is not enabled";
}
if (level.toLowerCase().equals("warn")) {
if (logger.isWarnEnabled())
logger.warn(logprefix + logmsg);
else
return "logger: 'warn' is not enabled";
}
if (level.toLowerCase().equals("error")) {
if (logger.isErrorEnabled())
logger.error(logprefix + logmsg);
else
return "logger: 'error' is not enabled";
}
return "logger: loglevel is enabled";
}
}
Wobei myApplicationLog() vorher void war, ich habe sie eigens zum Debuggen String returnen lassen. Die angegebenen Klassen von apache.commons.* liegen freilich in der WEB-INF/lib
Ich habe die einzelnen Levels isInfoEnabled(), isWarnEnabled(), isErrorEnebled() mal überprüft - es ist alles enabled. Meine definierten Logfiles werden wie gesagt beschrieben. Allerdings nur mit Start- und sonstigen allgemeinen Meldungen des Tomcat, nicht mit denen wofür sie gedacht waren. Es wäre auch schön, wenn ich den ganzen 'Müll' von Tomcat aus meinen Logfiles heraushalten könnte, die schreibt er ja ohnehin in catalina.out usw.
Woran kann es liegen, wo soll ich ansetzen, nachschauen?
Eine andere Strategie wäre, die Struktur der "fremden" Klasse, die ja durchaus gelogt hatte, zu analysieren und meine Klasse daraufhin nachzubauen, wie wäre das?
Danke, Gruß