Die Tomcat-App meldet: „Das Protokollierungssystem konnte nicht konfiguriert werden.Es wurden keine log.properties gefunden.“

StackOverflow https://stackoverflow.com/questions/1628234

  •  06-07-2019
  •  | 
  •  

Frage

Ich habe eine eingebettete Tomcat-App und jedes Mal, wenn ich sie starte, wird dieser Fehler zweimal auf der Konsole ausgegeben:

Unable to configure the logging system.  No log.properties was found.

Es scheint dumm, aber ich habe ein bisschen gegoogelt und Stackoverflow durchsucht und kann anscheinend niemanden finden, bei dem dieses Problem auftritt.

Meine Hauptklasse sieht ungefähr so ​​aus:

public class AuthServerEntryPoint {
  static {
    org.apache.log4j.PropertyConfigurator.configure("conf/log4j.properties");
  }
public static void main(String[] args) {
  // ...
}

„conf/log4j.properties“ enthält eine scheinbar gültige Konfiguration:

log4j.appender.mainAppend=org.apache.log4j.ConsoleAppender
log4j.appender.mainAppend.layout=org.apache.log4j.PatternLayout
log4j.appender.mainAppend.layout.ConversionPattern=%d %p [%t] %c -- %m%n 

log4j.appender.fileAppend=org.apache.log4j.FileAppender
log4j.appender.fileAppend.layout=org.apache.log4j.PatternLayout
log4j.appender.fileAppend.layout.ConversionPattern=%d %p [%t] %c - %m%n 
log4j.appender.fileAppend.file=logs/myservice.log

log4j.rootLogger = info, fileAppend
log4j.logger.com.mycompany.myservice = debug, fileAppend

Und die Protokollierung funktioniert tatsächlich – d. h. die Protokolle werden korrekt in myservice.log geschrieben.Was gibt es also?

Danke!-Carl

War es hilfreich?

Lösung

Von eingebettete Tomcat-App, Bedeuten Sie, dass Sie Tomcat aus Java-Code starten und die Klasse verwenden? org.apache.catalina.startup.Embedded?

Wenn ja, vermute ich, dass Tomcat seine Protokollierungskonfigurationsdatei, die in eingerichtet ist, möglicherweise nicht finden kann catalina.sh (oder gleichwertig) bei Verwendung der Skripte:

LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"

Das Seltsame daran ist, dass diese Datei aufgerufen wird logging.properties, nicht log.properties, also bin ich mir wirklich nicht sicher.Ich habe die Tomcat-Quellen allerdings nicht überprüft, vielleicht praktizieren sie dort eine Art schwarze Magie.

Könnten Sie einfach versuchen, es umzubenennen? $CATALINA_BASE/conf/logging.properties hinein log.properties (oder auch nicht) und es in den Klassenpfad Ihrer App zu stellen (oder festzulegen). -Djava.util.logging.config.file)?

Andere Tipps

Standardmäßig sucht log4j im Klassenpfad nach einer Protokollierungseigenschaftendatei.Legen Sie die Konfigurationsdatei für die Protokollierungseigenschaften Ihrer Webanwendung im Verzeichnis WEB-INF/classes ab.z.B.

$CATALINA_HOME/webapps/<yourApp>/WEB-INF/classes/log4j.properties

Dies ist der einfache Ansatz, um eine Webanwendung dazu zu bringen, Log4j zu verwenden, der in der referenzierten Dokumentation empfohlen wird.Und es ist der Ansatz, den ich selbst für die Webanwendungsprotokollierung verwende.

Es gibt auch verschiedene andere Möglichkeiten, die Log4j-Protokollierung auf Tomcat zu konfigurieren.Es ist möglich, dass Ihr Tomcat (teilweise) für die Verwendung einer davon konfiguriert wurde, aber etwas wurde nicht ganz richtig gemacht.

Die Konfiguration der log4j-Protokollierung von Tomcat über die Systemeigenschaften ist eine Option, die es vermeidet, herauszufinden, wo log4j sucht ...und was läuft schief.Dann müssen Sie jedoch kein benutzerdefiniertes Startskript erstellen/verwenden oder daran denken, Umgebungsvariablen festzulegen, bevor Sie Tomcat starten.

Verweise:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top