使用Jersey 2和LoggingFeature在服务器上记录请求和响应

时间:2018-02-04 17:09:20

标签: java rest logging jersey-2.0

我在Jersey2框架中有一个REST服务器应用程序。我需要设置所有收到的请求和服务器应用程序生成的响应的日志记录。正如我所推荐的那样,我使用的是LoggingFeature,因为这是自Jersey 2.23以来提供的方式。不幸的是,当我使用LoggingFeature时,我无法在日志中获取任何请求数据。

这是我正在使用的代码(基于示例https://docs.microsoft.com/en-us/azure/cosmos-db/create-mongodb-dotnet

public class HelloWorldApplication extends ResourceConfig {
public HelloWorldApplication() {
    // Define the package which contains the service classes.

    ResourceConfig config = new ResourceConfig(HelloWorldApplication.class);        
    Logger LOGGER = Logger.getLogger("my.logger");
    LOGGER.setLevel(Level.ALL);
    ConsoleHandler handler = new ConsoleHandler();
    handler.setFormatter(new SimpleFormatter());
    handler.setLevel(Level.ALL);
    LOGGER.addHandler(handler);
    FileHandler fh;  
    try {
        // This block configure the logger with handler and formatter  
        fh = new FileHandler("C:/temp/MyLogFile.log");  
        LOGGER.addHandler(fh);
        SimpleFormatter formatter = new SimpleFormatter();  
        fh.setFormatter(formatter);
    } catch (SecurityException e) {  
        e.printStackTrace();  
    } catch (IOException e) {  
        e.printStackTrace();  
    }

    LOGGER.info("Test log entry");

    config.register(new LoggingFeature(LOGGER, Level.ALL, LoggingFeature.Verbosity.PAYLOAD_ANY, 1000));
    packages("com.javahelps.jerseydemo.services");
}
}

当服务器启动时(我正在使用Tomcat),调用HelloWorldApplication构造函数,并在控制台和日志文件中写入“测试日志条目”。但是,当我调用任何Web服务方法时,日志文件中没有条目。方法处理正确,我在客户端获得预期的响应我只是无法在服务器上的日志中获得任何痕迹。 我今天花了太多时间在这上面,我真的很感激任何帮助。

0 个答案:

没有答案