2017-11-02 24 views
0

Grizzlyサーバにアクセスログを書き込めません。GrizzlyサーバとJerseyでアクセスログが空です

次のように最も簡単な設定は次のとおりです。リソースの

import org.glassfish.grizzly.http.server.HttpServer; 
import org.glassfish.grizzly.http.server.accesslog.AccessLogBuilder; 
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory; 
import org.glassfish.jersey.server.ResourceConfig; 
import org.glassfish.jersey.server.ServerProperties; 

import java.net.URI; 
import java.util.HashMap; 

public class App { 
    public static void main(String[] args) throws Exception { 
     URI uri = new URI("http://localhost:12987/"); 
     ResourceConfig rc = new ResourceConfig().registerClasses(Greeter.class); 
     HttpServer server = GrizzlyHttpServerFactory.createHttpServer(uri, rc); 
     new AccessLogBuilder("hi.access.log").instrument(server.getServerConfiguration()); 
     server.start(); 
    } 
} 

コード:依存関係の記述とバージョンを含む

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 

@Path("/") 
public class Greeter { 
    @GET 
    @Path("hi") 
    public String hi() { return "hi!"; } 
} 

のGradleスクリプト:

buildscript { 
    ext.java_version = '1.8' 
    ext.jersey_version = '2.25.1' 

    repositories { 
     mavenCentral() 
    } 
} 

apply plugin: 'java' 
sourceCompatibility = 1.8 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile "javax.servlet:servlet-api:2.5" 
    compile "org.glassfish.jersey.core:jersey-server:$jersey_version" 
    compile "org.glassfish.jersey.containers:jersey-container-servlet-core:$jersey_version" 
    compile "org.glassfish.jersey.containers:jersey-container-grizzly2-http:$jersey_version" 
} 

私はどこ予期しない動作を観察しますアクセスログファイルはサーバーの始まりで作成されますが、何も書き込まれませんそれが要求されたときにサーバーは応答を送信し、他のすべての側面で正常に動作します。

私は物事をデバッグしようとしていましたが、Jerseyは数多くのリフレクションと動的な読み込みに依存しています。私はまた、監視のためのプロパティ、特にServerProperties.MONITORING_ENABLEDを追加しようとしていましたが、何も変更されませんでした。

アクセスログを取得するにはどうすればよいですか?

答えて

0

それだけで必要な変更は

HttpServer server = GrizzlyHttpServerFactory.createHttpServer(uri, rc, false); 

注すぐにサーバを起動していない工場を伝える3番目の引数をfalseであることが判明しました。そうしないと、サーバーの構成(起動後)は動作に影響を与えません。

関連する問題