在我的输出中,我有像这样的来自 Jersey 的JUL日志记录消息

03.12.2010 14:14:55 com.sun.jersey.api.core.PackagesResourceConfig init
INFO: Scanning for root resource and provider classes in the packages:

我以编程方式想将它们切掉,所以我尝试了
Logger.getLogger("com.sun.jersey.api.core.PackagesResourceConfig").setLevel( Level.SEVERE );

或者
Logger.getLogger("com.sun.jersey").setLevel( Level.SEVERE );

但这不起作用。

有趣的是,这种全局配置有效:
Logger.getLogger( "com" ).setLevel( Level.SEVERE );

或者
Logger.getLogger( "" ).setLevel( Level.SEVERE );

为什么?

最佳答案

我对此有一些问题,所以我认为我应该将代码与导入一起放入以避免混淆。我对此进行了测试,并且可以在我的小型Web服务器配置中使用。同样,为了完整起见,我包括了整个服务器的实现。

import java.io.IOException;
import java.net.URI;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.ws.rs.core.UriBuilder;

import com.sun.jersey.api.container.httpserver.HttpServerFactory;
import com.sun.jersey.api.core.PackagesResourceConfig;
import com.sun.jersey.api.core.ResourceConfig;
import com.sun.net.httpserver.HttpServer;

public class WebServer {

    private HttpServer webServer;

    private final static Logger COM_SUN_JERSEY_LOGGER = Logger.getLogger( "com.sun.jersey" );

    static {
        COM_SUN_JERSEY_LOGGER.setLevel( Level.SEVERE );
    }

    public void start() throws IOException {
        System.out.println("Starting WebServer\n");
        webServer = createHttpServer();
        webServer.start();
        System.out.println(String.format("\nWeb Server started:" + "%sapplication.wadl\n", getURI()));
    }

    public void stop() {
        webServer.stop(0);
    }

    public static HttpServer createHttpServer() throws IOException {
        ResourceConfig rc = new PackagesResourceConfig("com.daford");
        return HttpServerFactory.create(getURI(), rc);
    }

    private static URI getURI() {
        return UriBuilder.fromUri("http://localhost/").port(4444).build();
    }
}

10-06 03:37
查看更多