2016-11-03 7 views
5

Я работаю над созданием некоторого API для отдыха с использованием JAX-RS и встроенного Jetty.I Включить ведение журнала сервера, добавив LogRequestHandler в файл Server.java.Ввод журнала встраиваемых вложений (Access)

Вопрос почему молы пишет 200 для каждого запроса 0:0:0:0:0:0:0:1 - - [03/Nov/2016:16:59:57 +0500] "GET /app/check HTTP/1.1" 200 - 4

хотя проверка конечной точки не реализуется не существует в приложении.

Исходный код:

ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); 
    //context.setContextPath("/"); 

    ResourceConfig config = new ResourceConfig(); 
    config.packages("server"); 
    ServletHolder servlet = new ServletHolder(new ServletContainer(config)); 
    context.addServlet(servlet,"/*"); 

    NCSARequestLog requestLog = new NCSARequestLog("/var/logs/jetty/log-yyyy_mm_dd.request.log"); 
    requestLog.setAppend(true); 
    requestLog.setExtended(false); 
    requestLog.setLogTimeZone("GMT+5"); 
    requestLog.setLogLatency(true); 
    requestLog.setRetainDays(90); 
    RequestLogHandler requestLogHandler = new RequestLogHandler(); 
    requestLogHandler.setRequestLog(requestLog); 

    HandlerList topLevelHandlers = new HandlerList(); 
    topLevelHandlers.addHandler(context); 
    topLevelHandlers.addHandler(requestLogHandler); 

    try { 
     jettyServer.setHandler(topLevelHandlers); 
     jettyServer.dumpStdErr(); 
     jettyServer.start(); 
    } 
+0

Опубликовать, как вы добавляете RequestHandler в свое приложение. Его расположение в дереве обработчиков важно. –

+0

RequestLogHandler requestLogHandler = new RequestLogHandler(); requestLogHandler.setRequestLog (requestLog); ServletContextHandler context = новый ServletContextHandler (ServletContextHandler.SESSIONS); context.addServlet (сервлет, "/ *"); server.addHandler() –

+0

Пожалуйста, отредактируйте свой вопрос и добавьте код, облегчит чтение/поиск. –

ответ

2

исправить это перестановке обработчик в следующем порядке

Я установил обработчик ресурсов как обработчики для журнала запроса (т.е. внешний проводник), то Обработчик requestlog добавляется к основным обработчикам причалов. Затем запросы будут отправляться на запрос журнала -> обработчики -> запрос журнала и обратно на пристань

3

RequestLogHandler Должен быть выполнен до любого контекста его отслеживания.

Идеальный способ использовать RequestLog, чтобы установить его на сервере и не использоватьRequestLogHandler ...

jettyServer.setRequestLog(requestLog); 

Но если у вас есть необходимость использовать его в качестве обработчика, то вы должны убедитесь, что она выполняется перед любыми контекстами, которые вы хотите отслеживать ...

HandlerList topLevelHandlers = new HandlerList(); 
topLevelHandlers.addHandler(requestLogHandler); 
topLevelHandlers.addHandler(context); 
jettyServer.setHandler(topLevelHandlers); 

или завернуть контекст с обработчика протокола запроса ...

requestLogHandler.setHandler(context); 
jettyServer.setHandler(requestLogHandler); 

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

  • Нет связанных вопросов^_^