2013-06-20 12 views

Odpowiedz

10

W dropwizard 0.8.1 (również próbował w 0.9.0-SNAPSHOT), dodać do 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) 
       ); 
} 

Aby skonfigurować rejestrator, dodać w pliku konfiguracyjnym (np conf.yml):

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

LoggingFilter jest przestarzałe. Zaktualizuj odpowiedź za pomocą LoggingFeatuers – Ramesh

13

W podklasie serwisowym (ex HelloWorldService), w metodzie run, dodać:

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

a następnie upewnij się, że com.sun.jersey.api.container.filter.LoggingFilter (lub dowolny pakiet rodzicem) jest skonfigurowany przynajmniej na poziomie log INFO, na przykład:

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

Z jakiegoś powodu program rejestrujący nie wydaje się konfigurować poziomu? –

+0

Należy pamiętać, że było to w Dropwizard 0.6.x dni. W wersji 0.7.0 mogło się to zmienić. Nigdy nie zbudowałem nic z Dropwizard 0.7.0 i odeszłem od tego, więc nie jestem pewien. Przepraszam. –

+0

LoggingFilter wewnętrznie wywołuje logger.info (...) Oto fragment: prywatny dziennik pustych danych (ostateczny StringBuilder b) { , jeśli (logger! = Null) { logger.info (b.toString()); } } –

5

W dropwizard 0.7.0 poprawnej składni, aby umożliwić rejestrowanie żądanie i odpowiedź brzmi:

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

odpowiedzi są nieco przestarzałe, to jak to należy zrobić w nowszych wersjach:

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

Gdzie logger jest java.util.logging.Logger

0

Logging Filtr jest przestarzałe, więc powinniśmy używać LoggingFeature.

Niestety nie mogłem dostać pracy z odpowiedzią @Kliknij upvote dnia

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

następujący kod pracował dla mnie. Odpowiadają różnym konstruktorom.

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

Oto konstruktory w obu przypadkach.

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; 
} 

Ustawienie poziomu działa.

Powiązane problemy