2016-11-03 12 views
5

JAX-RSと組み込みJetty.Iを使用していくつかの残りのAPIを作成しています。Server.javaファイルにLogRequestHandlerを追加してサーバーのログを有効にします。チェック終点がアプリ内に存在していない実装されていないものの桟橋が0:0:0:0:0:0:0:1 - - [03/Nov/2016:16:59:57 +0500] "GET /app/check HTTP/1.1" 200 - 4埋め込みJetty(アクセス)要求ログ

リクエストごとに200を書いている理由

質問です。

ソースコード:

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 =新しいRequestLogHandler(); requestLogHandler.setRequestLog(requestLog); ServletContextHandlerコンテキスト=新しいServletContextHandler(ServletContextHandler.SESSIONS); context.addServlet(サーブレット、 "/ *"); server.addHandler() –

+0

質問を編集してコードを追加して、読みやすく/検索しやすくしてください。 –

答えて

2

修正この

私は、要求ログのハンドラ(すなわち、それは外側のハンドラである)のようなリソースハンドラを設定し、次の順序でハンドラを再配置することによりrequestlogハンドラがメインのjettyハンドラに追加されました。その後、要求はログ - >ハンドラ - >要求ログを要求して桟橋に戻る

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); 
関連する問題