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