2015-09-26 6 views
6

Mein logging.properties in Eclipse so aussah, als ich zunächst diese Frage gestellt:Tomcat7 Logging Hell - warum zwei verschiedene Formate herauskommen?

handlers = java.util.logging.ConsoleHandler 

org.apache.catalina.core=OFF 

java.util.logging.ConsoleHandler.level = FINE 
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 
java.util.logging.SimpleFormatter.format=JUL %4$s: %2$s%n%4$s: %5$s%n 

ich auf einem Linux-Server mit dieser Konfiguration das gleiche Problem auch am Problem aufgetreten ist:

handlers = 2localhost.org.apache.juli.FileHandler, org.apache.juli.FileHandler 

.handlers = org.apache.juli.FileHandler 

2localhost.org.apache.juli.FileHandler.level = INFO 
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 
2localhost.org.apache.juli.FileHandler.prefix = localhost. 

org.apache.juli.FileHandler.level = ALL 
org.apache.juli.FileHandler.formatter = java.util.logging.SimpleFormatter 
org.apache.juli.FileHandler.directory = ${catalina.base}/logs 
java.util.logging.SimpleFormatter.format=tomcat: %4$s: %2$s%n%4$s: %5$s%n 

org.apache.catalina.handlers = org.apache.juli.FileHandler 
org.apache.catalina.startup.level = SEVERE 
org.apache.catalina.session.ManagerBase.level = SEVERE 
org.apache.catalina.core.AprLifecycleListener.level=SEVERE 
org.apache.catalina.connector.level = SEVERE 
org.apache.coyote.level=SEVERE 

org.apache.catalina.level=ALL 
org.apache.catalina.startup.HostConfig.level = SEVERE 
org.apache.catalina.loader.WebappClassLoader.level = SEVERE 
org.apache.catalina.session.ManagerBase.level = INFO 

# ServletContext logger 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = ALL 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].formatter = java.util.logging.SimpleFormatter 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].format=servlet: %4$s: %2$s%n%4$s: %5$s%n 

Warum dann meine Konsole tut einloggen Eclipse so aussehen?

JUL INFO: org.apache.catalina.core.AprLifecycleListener init 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.8.0_05\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;c:\Program Files (x86)\Intel\iCLS Client\;c:\Program Files\Intel\iCLS Client\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\Bitvise SSH Client;C:\Program Files (x86)\MySQL\MySQL Utilities 1.4.3\;C:\Program Files (x86)\MySQL\MySQL Utilities 1.4.3\Doctrine extensions for PHP\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files\TortoiseGit\bin;C:\Program Files (x86)\Git\cmd;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;C:\Program Files (x86)\BaseX\bin;C:\Program Files (x86)\WinMerge;C:\Program Files (x86)\Skype\Phone\;. 
JUL WARNING: org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:ctc_web_front_ui' did not find a matching property. 
JUL INFO: org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-bio-8080"] 
JUL INFO: org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 
JUL INFO: org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 359 ms 
JUL INFO: org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
JUL INFO: org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/7.0.47 
JUL INFO: org.apache.catalina.core.ApplicationContext log 
INFO: No Spring WebApplicationInitializer types detected on classpath 
JUL INFO: org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring FrameworkServlet 'servletSpringDispatcher' 
JUL INFO: org.springframework.web.servlet.FrameworkServlet initServletBean 
INFO: FrameworkServlet 'servletSpringDispatcher': initialization started 

Woher kommen die nackten INFO-Nachrichten?

Und warum werden catalina.core-Nachrichten immer noch angezeigt, obwohl ich sie auf OFF gestellt habe?

auf dem Linux-Server das Protokoll JULI sieht wie folgt aus:

tomcat: FINE: org.apache.catalina.core.ContainerBase addChildInternal 
FINE: Add child StandardHost[localhost] StandardEngine[Catalina] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [StandardServer[8005]] to [INITIALIZING] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [[email protected]] to [INITIALIZING] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [[email protected]] to [INITIALIZED] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [StandardService[Catalina]] to [INITIALIZING] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [StandardEngine[Catalina]] to [INITIALIZING] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [StandardEngine[Catalina]] to [INITIALIZED] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [Connector[HTTP/1.1-8080]] to [INITIALIZING] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [[email protected]] to [INITIALIZING] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [[email protected]] to [INITIALIZED] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [Connector[HTTP/1.1-8080]] to [INITIALIZED] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [StandardService[Catalina]] to [INITIALIZED] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [StandardServer[8005]] to [INITIALIZED] 
tomcat: FINE: org.apache.catalina.util.LifecycleBase setStateInternal 
FINE: Setting state for [StandardServer[8005]] to [STARTING_PREP] 
tomcat: FINE: org.apache.catalina.core.NamingContextListener lifecycleEvent 
FINE: Bound StandardServer[8005] 
tomcat: FINE: org.apache.catalina.core.NamingContextListener createNamingContext 
FINE: Creating JNDI naming context 
tomcat: FINE: org.apache.catalina.core.NamingContextListener addResource 

gleiche Frage stellt, warum nicht alle Linien mit tomcat: beginnen?

UPDATE während des Debuggens entdeckte ich, dass beide Linien jeder Protokolleintrag von java.util.logging.Logger.logp kommen() enter image description here

Antwort

1

Die Antwort hat uns ins Gesicht gestarrt, von der Spitze des Beitrages:

java.util.logging.SimpleFormatter.format=JUL %4$s: %2$s%n%4$s: %5$s%n 
                 ^^^^^^^ 

die extra %n%4$s: in der Formatzeichenfolge bewirkt, dass die zusätzliche Zeile u anzeigt p. Duh.

-1

Ich glaube, Sie jul-to- sind vermisst slf4j. Sehen Sie hier für mehr Details slf4j legacy bridge documentation

+0

Das löst dieses spezielle Problem nicht. Nach der Installation von jul-to-slf4j und der Konfiguration der Bridge konnte ich alle Nachrichten zum Logback umleiten, aber ich erhalte immer noch die zwei verschiedenen Arten von Nachrichten. –

-1

FINE, ALL, INFO, WARN, ERROR, SCHWERE, etc. sind alle Protokoll Ebene s für jeden Logger. Schalten Sie alle auf SEVERE, um die geringste Protokollausgabe zu erhalten. ALL, ist im Grunde das Logging-Äquivalent einer ausführlichen Flagge. FINE ist die zweithöchste Protokollausgaberate.

+0

Immer noch nicht beantworten, warum ich die mysteriösen Extra-Log-Zeilen, die nicht mit der Formatzeichenfolge –

+0

übereinstimmen, haben Sie es versucht? – Stephan

0

Die Info-Nachrichten, auf die Sie sich beziehen, sind nicht Teil des Kerns. Sie werden von Klassen in verschiedenen Paketen generiert. catalina Libs und Identifizierung der Klassen verantwortlich für bestimmte Protokolle, die von sezieren, hier ist die Konfiguration, die Protokolle auf tomcat 7.0.63 verhindert hat, durch logging.properties auf Standard anhängt:

org.apache.catalina.startup.level=OFF 
org.apache.catalina.startup.handlers=1catalina.org.apache.juli.FileHandler.level 

org.apache.catalina.core.level=OFF 
org.apache.catalina.core.handlers=1catalina.org.apache.juli.FileHandler.level 

org.apache.coyote.level=OFF 
org.apache.coyote.handlers=1catalina.org.apache.juli.FileHandler.level 
+1

Es ist immer neidisch, wenn jemand etwas findet, das jemand nicht herausfinden konnte! –

1

Mein logging.properties in Eclipse

  1. Ich weiß nicht, wie Ihr Arbeitsbereich konfiguriert ist. Vielleicht wird diese Datei überhaupt nicht verwendet.

    Java-Protokollierung wird durch Systemeigenschaften konfiguriert.

    Sie benötigen eine Eigenschaft (-Djava.util.logging.manager), um org.apache.juli.ClassLoaderLogManager als Protokollmanagerimplementierung für Java Logging zu konfigurieren.

    Sie benötigen eine andere Eigenschaft (-Djava.util.logging.config.file), um den Pfad zur Konfigurationsdatei zu konfigurieren.

    Normalerweise werden beide Eigenschaften vom Startskript (catalina.sh, catalina.bat) festgelegt, aber Eclipse startet Java direkt, ohne Hilfe dieses Skripts. Daher müssen diese Systemeigenschaften explizit in einer Startkonfiguration festgelegt werden.

    http://tomcat.markmail.org/thread/vpr7mjxmgdvkl3dv

  2. Tomcat unterstützt JULI pro-Classloader-Konfiguration der Protokollierung.

    Diese Funktion ermöglicht es, die Protokollierung für jede Webanwendung einzeln zu konfigurieren, indem eine WEB-INF/classes/logging.properties-Datei darin gepackt wird.

    Wenn Sie unerwartet eine logging.properties Datei in den Klassenpfad platziert haben, hat dies den gleichen Effekt: Sie ersetzt die Standardkonfiguration für Klassen, die von diesem Klassenlader geladen wurden.

    z. Es ist bekannt, dass eine Version der Jollyday-Bibliothek (vor 4 Jahren) eine unerwartete logging.properties-Datei enthielt, die die FINE-Protokollierung ermöglichte.

    .level = ALL

    https://bz.apache.org/bugzilla/show_bug.cgi?id=52011

+0

Das hat meine Frage nicht wirklich beantwortet, aber danke, dass Sie in Tomcat's Initialisierungsprozess Licht gebracht haben, das erklärt viel. –

Verwandte Themen