2015-03-11 17 views
5

Ho creato una webapp che funziona su Tomcat 8. Come sempre voglio usare slf4j e in questo caso, supportato da java.util.logging (perché è il predefinito per Tomcat). Le dipendenze rilevanti sono questo:come accedere a tomcat usando slf4j e java.util.logging

<!-- logging --> 
<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.7.10</version> 
</dependency> 
<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-jdk14</artifactId> 
    <version>1.7.10</version> 
    <scope>runtime</scope> 
</dependency> 

ho aggiunto alcune dichiarazioni di registro nel codice (informazioni e di debug), ma io non le trovano. Né nell'output della console (se avvio Tomcat da eclipse) né in nessuno dei file di registro creati nella cartella/logs (La mia app funziona correttamente).

Quindi cosa manca qui? Devo aggiungere qualcosa a conf/logging.properties (non voglio impacchettare alcuna configurazione di registro nella mia app)? Esiste un esempio su come configurare la registrazione di una determinata webapp distribuita in tomcat?

risposta

2

L'unico problema era la configurazione sul lato Tomcat. Poiché Tomcat non usa semplicemente java.util.logging, la configurazione è leggermente diversa. Così l'aggiunta di alcune linee per conf/logging.properties aiutato:

... 

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

.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler 

############################################################ 
# Handler specific properties. 
# Describes specific configuration info for Handlers. 
############################################################ 

1catalina.org.apache.juli.AsyncFileHandler.level = FINE 
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina. 

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

3manager.org.apache.juli.AsyncFileHandler.level = FINE 
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 
3manager.org.apache.juli.AsyncFileHandler.prefix = manager. 

4host-manager.org.apache.juli.AsyncFileHandler.level = FINE 
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager. 

5reportExport.org.apache.juli.AsyncFileHandler.level = FINE 
5reportExport.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 
5reportExport.org.apache.juli.AsyncFileHandler.prefix = reportExport. 

java.util.logging.ConsoleHandler.level = FINE 
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter 


############################################################ 
# Facility specific properties. 
# Provides extra control for each logger. 
############################################################ 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler 

com.prodyna.reportExport.level = FINE 
com.prodyna.reportExport.handlers = 5reportExport.org.apache.juli.AsyncFileHandler 

# For example, set the org.apache.catalina.util.LifecycleBase logger to log 
# each component that extends LifecycleBase changing state: 
#org.apache.catalina.util.LifecycleBase.level = FINE 

# To see debug messages in TldLocationsCache, uncomment the following line: 
#org.apache.jasper.compiler.TldLocationsCache.level = FINE 

così ho aggiunto un gestore adizionale "5reportExport.org.apache.juli.AsyncFileHandler" per ottenere la mia roba nel file separato. Quindi ho configurato questo gestore come gli altri. La parte cruciale è alla fine:

com.prodyna.reportExport.level = FINE 
com.prodyna.reportExport.handlers = 5reportExport.org.apache.juli.AsyncFileHandler 

Questo utilizza il gestore configurato per tutte le classi in pacchetto com.prodyna.reportExport.

+0

Sto cercando di ottenere lo stesso, ma i registri non vengono visualizzati nel file configurato, si mostrano solo in catalina.out. Quando utilizzo direttamente la registrazione java util, i registri sono visibili nel file. Qualche suggerimento su come risolvere questo? TIA – abhishekmahawar