2013-06-20 8 views

risposta

10

In dropwizard 0.8.1 (provato anche in 0.9.0-SNAPSHOT), aggiungi al Application.run(...):

import java.util.logging.Logger; 
import org.glassfish.jersey.filter.LoggingFilter; 
... 
public void run(MyApplicationConfiguration conf, Environment env) throws Exception { 
    // do your stuff and then add LoggingFilter 
    env.jersey().register(new LoggingFilter(
        Logger.getLogger(LoggingFilter.class.getName()), 
        true) 
       ); 
} 

Per configurare logger, aggiungere nel file di configurazione (ad esempio: conf.yml):

logging: 
    loggers: 
    org.glassfish.jersey.filter.LoggingFilter: INFO 
+1

LoggingFilter è obsoleto. Si prega di aggiornare la risposta con LoggingFeatuers – Ramesh

13

nella sottoclasse servizio (ex HelloWorldService), nel metodo di esecuzione, aggiungere:

environment.setJerseyProperty(ResourceConfig.PROPERTY_CONTAINER_REQUEST_FILTERS, LoggingFilter.class.getName()); 
environment.setJerseyProperty(ResourceConfig.PROPERTY_CONTAINER_RESPONSE_FILTERS, LoggingFilter.class.getName()); 

e quindi assicurarsi che com.sun.jersey.api.container.filter.LoggingFilter (o qualsiasi pacchetto padre) è configurato almeno a livello di registro INFO, ad esempio:

logging: 
    loggers: 
    "com.sun.jersey.api.container.filter.LoggingFilter": INFO 
+0

Per qualche motivo il logger non sembra configurare il livello? –

+0

Si noti che questo era in Dropwizard 0.6.x giorni. In 0.7.0 potrebbe essere cambiato. Non ho mai creato nulla con Dropwizard 0.7.0 e me ne sono allontanato, quindi non ne sono sicuro. Scusate. –

+0

LoggingFilter chiama internamente logger.info (...) Ecco il frammento: log private void (finale StringBuilder b) { if (! Logger = null) { logger.info (b.toString()); } } –

5

In dropwizard 0.7.0 la sintassi corretta per abilitare richiesta e risposta registrazione è:

environment.jersey().property(ResourceConfig.PROPERTY_CONTAINER_REQUEST_FILTERS, LoggingFilter.class.getName()); 
environment.jersey().property(ResourceConfig.PROPERTY_CONTAINER_RESPONSE_FILTERS, LoggingFilter.class.getName()); 
5

Le risposte sono un po 'obsolete, è così che deve essere fatto nelle versioni più recenti:

env.jersey().register(new LoggingFeature(logger, LoggingFeature.Verbosity.PAYLOAD_ANY)); 

Dove logger è un java.util.logging.Logger

0

Logging filtro è obsoleto, quindi dovremmo utilizzare LoggingFeature.

purtroppo non ho potuto farlo funzionare con la risposta di @Fare clic Upvote di

env.jersey().register(new LoggingFeature(logger, LoggingFeature.Verbosity.PAYLOAD_ANY));

seguente codice ha funzionato per me. Corrispondono a diversi costruttori.

environment.jersey().register(new LoggingFeature(Logger.getLogger(LoggingFeature.DEFAULT_LOGGER_NAME), Level.INFO, LoggingFeature.Verbosity.PAYLOAD_ANY, LoggingFeature.DEFAULT_MAX_ENTITY_SIZE)); 

Ecco i costruttori in entrambi i casi.

public LoggingFeature(Logger logger, Integer maxEntitySize) { 
    this(logger, (Level)null, DEFAULT_VERBOSITY, maxEntitySize); 
} 

public LoggingFeature(Logger logger, Level level, LoggingFeature.Verbosity verbosity, Integer maxEntitySize) { 
    this.filterLogger = logger; 
    this.level = level; 
    this.verbosity = verbosity; 
    this.maxEntitySize = maxEntitySize; 
} 

L'impostazione del livello sta facendo il trucco.

Problemi correlati