2013-06-20 7 views

ответ

10

В dropwizard 0.8.1 (также попытался в 0.9.0-SNAPSHOT), добавить к 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) 
       ); 
} 

Чтобы настроить регистратор, добавьте в файл конфигурации (например: conf.yml):

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

LoggingFilter устарел. Обновите ответ LoggingFeatuers – Ramesh

13

В подклассе Service (бывший HelloWorldService), в способе запуска, добавьте:

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

, а затем убедитесь, что com.sun.jersey.api.container.filter.LoggingFilter (или любой родительский пакет) выполнен по меньшей мере, на уровне журнала ИНФО, например:

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

По какой-то причине регистратор, похоже, не настроил уровень? –

+0

Обратите внимание, что это было в Dropwizard 0.6.x дней. В 0.7.0 оно могло измениться. Я никогда ничего не строил с Dropwizard 0.7.0 и ушел от него, поэтому я не уверен. Сожалею. –

+0

LoggingFilter внутренне называет logger.info (...) Вот фрагмент: частный журнал недействительным (окончательный StringBuilder б) { если (! Логгер = NULL) { logger.info (b.toString()); } } –

5

в dropwizard 0.7.0 правильный синтаксис для того, чтобы запрашивать и протоколирование ответ:

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

ответы немного устарели, это то, как это должно быть сделано в новых версиях:

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

Где 0 является java.util.logging.Logger

0

Logging фильтр осуждается, поэтому мы должны использовать LoggingFeature.

К сожалению, я не мог заставить его работать с ответом Upvote @ Щелкните о

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

Следующий код работает для меня. Они соответствуют разным конструкторам.

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

Вот конструкторы в обоих случаях.

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

Установка уровня делает трюк.

Смежные вопросы