Servlet log4j : logDatei angeben

reibi

Top Contributor
Hallo

Ich möchte in meinem Servlet ganz normal log4j mit properties-File benutzen.

In Konsolenanwendungen mach ich das ja so

Java:
log4j.appender.F.File=log/myprg.log
Dann schreibt er das logfile einfach aufs Filesystem.

Was isn n guter weg in nem Servlet?
Im Tomcat gits n "logs"-verzeichnis. Gibts das bei anderen ServletEngines auch und sollte das benutzt werden?

Oder is n anderer Ansatz eher besser?

Gruss
 
M

maki

Gast
In Tomcat kannst du dafür die variable catalina.home nutzen, ohne Tomcat leider nicht.. stört imho in Tests.
Code:
log4j.appender.R.File=${catalina.home}/logs/tomcat.log
 

reibi

Top Contributor
Danke funktioniert prima ;-)

Das mit den tests find ich auch doof und nochwas:
Die gebuildete Webapplikation ist dann plattformabhängig - der build hängt an Tomcat. Es kann nihct in nem glassfisch oder webslogic laufen ohne umgebuildet zu werden ... oder man braucht n hack in dem man das warfile aufmacht und die infos ändert.

Für n standard-produkt, welches NICHT für eine bestehende Umgebung gebuildet wird ist das sehr schlecht.
Das Konzept hat da Schwächen

Trotzdem Danke und Gruss
 

turtle

Top Contributor
Ich habe den Eindruck, dass hier das Logging vom Container (z.B. Tomcat, Glassfish, ...) mit dem der Webapplikation zusammengebracht (verwechselt) wird?

Das Looging des Containers ist "natürlich" spezifisch für den Container und für Tomcat gut hier beschrieben.

Das Logging einer Webapplikation sollte vom Container-Logging unterschieden werden!

Daher kannst Du zum Beispiel log4j in Deiner Webapplikation einrichten und im WEB-INF/lib Verzeichnis die Jar-Datei und die Log4J Konfiguration in WEB-INF/classes hinterlegen. Dadurch kommen die verschiedene Logging-Frameworks sich nicht in die Quere.
 

reibi

Top Contributor
IIch habe den Eindruck, dass hier das Logging vom Container (z.B. Tomcat, Glassfish, ...) mit dem der Webapplikation zusammengebracht (verwechselt) wird?

Es ging ja ums verzeichnis ..ja?!

und zwar um das hier : "${catalina.home}/logs/myapp.log"

Egal ob tomcat-manager, artifactory oder Deine eigene app sollte ja dort rein loggen ... oder?
 

turtle

Top Contributor
Egal ob tomcat-manager, artifactory oder Deine eigene app sollte ja dort rein loggen ... oder?

Da bin ich anderer Meinung.

Ich finde gut, wenn die Applikation in ihr eigenes Verzeichnis loggt, weil ich da als Erstes reinschaue (und nicht in Tomcat/logs um dann rauszufummeln in welche Datei die Applikation gelogged hat)
 

reibi

Top Contributor
Ich finde gut, wenn die Applikation in ihr eigenes Verzeichnis loggt

und in welches in deinem Beispielfall?

Also in dem Fall hat man natürlich keine Abhängigkeiten zum Container .. das ist klar!
Aber man muss extra ne Verzeichnisstruktur anlegen und konfigurierenm, nachdem man die webapp in den Container deployed hat.

gruss
 
M

maki

Gast
Man kann ja auch unter ${catalina.home}/logs/ für jede WebApp eine eigene (oder gar 2? ;)) Logdateien schreiben...

@turtle
Was meinst du denn mit "die Applikation in ihr eigenes Verzeichnis"?
WebApps haben kein "eigenes Verzeichnis" von Haus aus im eigentlichen Sinne, es ist nciht garantiert dass das war Archiv entpackt wird und man auf den Pfad zugriff hat.
 

reibi

Top Contributor
Eine eigene log4j-Konfiguration heisst aber noch nicht n anderes verzeichnis.(laut KONVENTION)

Wenn Du undeploy machst, sind Deine logs weg!

Ich kenne Dein problem, läuft mir auch ab und zu über den Weg ;-) und nicht nur beim loggen

gruss
 

reibi

Top Contributor
Ich log trotzdem in den Container-log. Das machen alle wewbapps so, die ich kenne. Auch tomcat-manager und artifactory
und wieSeAlleHeißen ;-)
 
M

maki

Gast
Mind. eine eigene Logdatei, oder besser 2 (eine für alle, und eine nur für Error) sollten es schon sein, ausser du willst deine Logeinträge mit der Lupe suchen ;)
 

turtle

Top Contributor
Habe das gefunden und da gibt es für jede Meinung mindestens einen Fürsprecher. Also richtet Euch das Logging so ein, wie Ihr wollt ;)
 

freez

Top Contributor
Ich meine mich zu erinnern, dass Tomcat automatisch alle STDOUT und STDERR log Ausgaben in seine log Files schiebt? Vielleicht wäre das ein Weg, nur dass man den Ablageort nicht beeinflussen kann ... bzw. evtl. in den Configfiles vom Tomcat.
 

Ähnliche Java Themen

Neue Themen


Oben