2015-09-26 7 views
6

mio logging.properties in Eclipse si presentava così, quando ho inizialmente postato questa domanda:Tomcat7 logging hell: perché escono due formati diversi?

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 

Sono anche incontrando lo stesso problema su un server Linux con questa configurazione:

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 

Perché allora la mia console accedi Eclipse in questo modo?

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 

Da dove provengono i messaggi INFO nudi?

E perché i messaggi catalina.core continuano a essere visualizzati anche se li ho impostati su OFF?

Sul server Linux registro JULI assomiglia a questo: si applica

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 

Stessa domanda, perché non tutte le linee iniziano con tomcat:?

UPDATE Durante il debug ho scoperto che entrambe le linee ciascuna voce di registro vengono da java.util.logging.Logger.logp() enter image description here

risposta

1

La risposta è stata di noi guardando in faccia, dalla parte superiore del distacco:

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

L'extra %n%4$s: nella stringa di formato è ciò che fa sì che la linea aggiuntiva ti mostri p. Duh.

-1

penso che ti manca mar-to slf4j. Vedi qui per maggiori dettagli slf4j legacy bridge documentation

+0

Questo non risolve questo particolare problema. Dopo aver installato jul-to-slf4j e configurato il bridge, sono stato in grado di reindirizzare tutti i messaggi al logback, ma sto ancora ottenendo i due distinti tipi di messaggi. –

-1

FINE, TUTTO, INFO, WARN, ERROR, grave, ecc sono tutti i log livello s per ciascun logger. Passare tutti a SEVERE per avere l'output di registro minimo. ALL, è fondamentalmente l'equivalente di registrazione di una bandiera verbose. FINE è la seconda velocità di uscita del registro più alta.

+0

Ancora non risponde perché sto ottenendo le misteriose linee di registro extra che non corrispondono alla stringa di formato –

+0

hai provato? – Stephan

0

I messaggi di informazione a cui si fa riferimento non sono in realtà parte del core. Vengono generati da classi in diversi pacchetti. Sezionando librerie Catalina e identificare le classi responsabili per particolari ceppi, qui è la configurazione che ha impedito log su tomcat 7.0.63, aggiungendo al default logging.properties:

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

E 'sempre invidioso quando qualcuno trova qualcosa che qualcuno non riesce a capire! –

1

miei logging.properties in Eclipse

  1. Non so come sia configurato il tuo spazio di lavoro. Forse quel file non è usato affatto.

    La registrazione Java è configurata dalle proprietà di sistema.

    È necessaria una proprietà (-Djava.util.logging.manager) per configurare org.apache.juli.ClassLoaderLogManager come implementazione del gestore di log per la registrazione Java.

    È necessaria un'altra proprietà (-Djava.util.logging.config.file) per configurare il percorso del file di configurazione.

    Di solito entrambe le proprietà sono impostate dallo script di avvio (catalina.sh, catalina.bat), ma Eclipse avvia direttamente java, senza l'aiuto di quello script, quindi le proprietà del sistema devono essere impostate esplicitamente in una configurazione di avvio.

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

  2. Tomcat JULI supporta la configurazione per-programma di caricamento classe di logging.

    Questa funzione consente di configurare la registrazione individualmente per ogni applicazione Web comprimendo un file WEB-INF/classes/logging.properties.

    Se è stato imposto in modo imprevisto un file logging.properties in classpath, avrà lo stesso effetto: sostituirà la configurazione predefinita per le classi caricate da quel classloader.

    E.g. è noto che alcune versioni della libreria Jollyday (4 anni fa) includevano un file logging.properties inaspettato che abilitava la registrazione FINE.

    .level = ALL

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

+0

Questo in realtà non ha risposto alla mia domanda, ma grazie per aver fatto luce sul processo di inizializzazione di tomcat, che spiega molto. –

Problemi correlati