Mi piacerebbe sapere come configurare Dropwizard per registrare la risposta JSON.Come registrare le risposte JSON in Dropwizard (Jersey)
risposta
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
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
Per qualche motivo il logger non sembra configurare il livello? –
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. –
LoggingFilter chiama internamente logger.info (...) Ecco il frammento: log private void (finale StringBuilder b) { if (! Logger = null) { logger.info (b.toString()); } } –
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());
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
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.
- 1. Dropwizard/Jersey: l'autenticazione e il parametro JSON
- 2. Come comprimere le risposte JSON
- 3. Messaggi di errore di Dropwizard da Jersey
- 4. Jersey ... come registrare tutte le eccezioni, ma invocare ancora ExceptionMappers
- 5. Utilizzare le risposte GZIP, JSON e JQuery
- 6. Spring Boot - Come registrare tutte le richieste e le risposte con eccezioni in un unico posto?
- 7. Come distribuire un'applicazione dropwizard
- 8. Come utilizzare Couchbase Java Client in un progetto Dropwizard?
- 9. Jersey consuma JSON su POST
- 10. Jersey/Jackson: come catturare l'eccezione JSON?
- 11. Come generare JSON da una risorsa Jersey?
- 12. Come verificare le risposte AB?
- 13. Stampa Jersey JSON in Unit Testing
- 14. Polymorphism in JSON, Jersey e Jackson
- 15. Restituzione di JSON o XML per le eccezioni nel Jersey
- 16. come ottenere i valori di configurazione in yml - utilizzando dropwizard (microservice) Jersey D.I @ Injection?
- 17. Aggiunta di un hook per registrare globalmente tutte le risposte HTTP del nodo in node.js/express
- 18. Jersey 2. *. Come sostituire InjectableProvider e AbstractHttpContextInjectable di Jersey 1. *
- 19. Come implementare le statistiche usando metriche dropwizard e spring-mvc
- 20. Come implementare websocket in Dropwizard
- 21. OWIN middleware per correlare e registrare richieste e risposte?
- 22. Come evitare il conflitto di dipendenze quando si utilizza il client dropwizard + jersey
- 23. Test integrato Dropwizard con TestResource
- 24. Blocchi di commento intorno alle risposte JSON
- 25. Heroku tronca le risposte HTTP?
- 26. come registrare un JSON marshaller personalizzato in graal
- 27. Grizzly Jersey ingoiare le eccezioni
- 28. Dropwizard - risorse su più porte
- 29. Come registrare le query PostgreSQL?
- 30. Come registrare le eccezioni "catched"?
LoggingFilter è obsoleto. Si prega di aggiornare la risposta con LoggingFeatuers – Ramesh