Wie erstelle ich ein benanntes Protokoll in $ TOMCAT_HOME/logs für mein Servlet?

Ich logge mich gerade mit den einfachsten Methoden in meinem Servlet mit Tomcat ein. Ich benutze das ServletConfig.getServletContext() .log, um Aktivität aufzuzeichnen. Dies schreibt in die Datei localhost.YYYY-MM-DD.log in $ TOMCAT_HOME/logs.

Ich möchte nicht von der Einfachheit dieses Protokollierungsmechanismus wegkommen, es sei denn, es ist absolut notwendig. Aber ich möchte meine Protokolldatei nennen. Anstatt "localhost" .YYYY-MM-DD.log gibt es eine Möglichkeit, es in "myAppName" .YYYY-MM-DD.log schreiben zu lassen. Ich weiß, dass ich meinen eigenen Mechanismus schaffen könnte, aber ich suche hier wieder nach Einfachheit.

Ich hoffe, dass ich mich von einem kompletten Framework wie Log4j fern halte.

1
Ich kann tun, was ich will (siehe Antwort unten), ohne einen ganzen Rahmen und alles, was dazu gehört, das Glas, die Lernkurve, etc. Manchmal weniger mehr.
hinzugefügt der Autor dacracot, Quelle
Was wäre falsch mit einem Framework wie Log4j? Es ist Standard und hat eine ziemlich einfache Schnittstelle.
hinzugefügt der Autor Hans Doggen, Quelle

2 Antworten

Es gibt also einen Weg über die $ TOMCAT_HOME/conf/logging.properties, ohne meinen Servlet-Code zu berühren ...

Vor...

handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4admin.org.apache.juli.FileHandler, 5host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

nach...

handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4admin.org.apache.juli.FileHandler, 5host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler, 6localhost.org.apache.juli.FileHandler

dann füge hinzu...

6localhost.org.apache.juli.FileHandler.level = FINE
6localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
6localhost.org.apache.juli.FileHandler.prefix = myAppName.

und hinzufügen ...

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/myAppName].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/myAppName].handlers = 6localhost.org.apache.juli.FileHandler

und bounce tomcat. Dadurch wurde ein $ TOMCAT_HOME/logs/myAppName.2008-10-14.log mit meinen vereinfachten ServletConfig.getServletContext() .log() - Nachrichten erstellt.

0
hinzugefügt

Für Tomcat 6.x können Sie die Protokollierungskonfiguration in conf/logging.properties ändern.

Aber ich bevorzuge eine separate Konfiguration mit Log4j ...

0
hinzugefügt
Gibt es eine Möglichkeit, die logging.properties für den Kontext meines Servlets spezifisch zu machen? Außerdem würde ich Einfachheit bevorzugen, und Log4j erscheint mir nicht so einfach (nicht unbedingt schwierig, aber überlastet mit Optionen).
hinzugefügt der Autor dacracot, Quelle
log4j ist sehr einfach zu benutzen. Nehmen Sie sich einfach die fünf Minuten Zeit, um das Programm zum ersten Mal einzurichten, verwenden Sie dieselbe Konfigurationsdatei log4j.properties oder log4j.xml, und Sie werden mit den Ergebnissen sehr zufrieden sein (und sich wundern, warum Sie sie vorher nicht verwendet haben!) ).
hinzugefügt der Autor matt b, Quelle