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
を追加しようとしていましたが、何も変更されませんでした。
アクセスログを取得するにはどうすればよいですか?