编程语言
首页 > 编程语言> > Java-Web服务中的丰富日志记录

Java-Web服务中的丰富日志记录

作者:互联网

我有一个简单的Web服务,如下所示:

@WebService
public class MyWebService 
{
    @WebMethod
    public String ProcessQuery(@WebParam(name="query") String q)
    {
    // Logging here: User IP, etc.
    }

    public static void main(String[] args) throws Exception 
    {
    String address = "http://127.0.0.1:8023/_WebServiceDemo";
    Endpoint.publish(address, new MyWebService());
    new DocumentServer();
    System.out.println("Listening: " + address);
    }
}

我想为我的服务添加一种日志记录方法以提取信息.我听说过NCSA格式和Log4J,但是我不知道如何在服务中使用它们.我想记录用户的IP和其他信息.我该怎么做?

谢谢.

编辑:我应该注意,我的问题的主要部分是如何在Web方法中检索一些数据,例如用户的IP,客户端等.

解决方法:

将WebServiceContext添加到您的类中,以便您可以获取HttpServletRequest:

@WebService
public class MyWebService 
{
    @Resource
    WebServiceContext wsContext;

    @WebMethod
    public String ProcessQuery(@WebParam(name="query") String q)
    {
        MessageContext messageContext = wsContext.getMessageContext();
        HttpServletRequest request = (HttpServletRequest) messageContext.get(SOAPMessageContext.SERVLET_REQUEST);

        // now you can get anything you want from the request
    }

}

标签:logging,log4j,jax-ws,java
来源: https://codeday.me/bug/20191208/2092142.html