【发布时间】:2019-08-20 05:09:52
【问题描述】:
我正在使用基于Servlet 的Web 应用程序并希望获得适当的日志记录支持。我正在使用Log4j,当我收到任何请求时,我想用它的全部属性(不是所有内容,只是标题和参数)记录它。
例如:
@WebServlet(name = "Login", value = "/Login")
public class Login extends HttpServlet {
final static Logger logger = Logger.getLogger(Login.class);
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
logger.info(req); // I want to log request with its
// properties: such as request parameters, headers and so on
// TODO some logic here
}
}
那么,我怎样才能以某种方式覆盖 HttpServletRequests toString() 方法,它实际上是一个接口。为它创建Wrapper 类并可以在那里覆盖toString() 方法是个好主意吗?
【问题讨论】:
-
好吧,要覆盖 HttpServletRequest 的 toString() 方法,您需要扩展/实现它。为什么你甚至想要?
-
你可能需要一个拦截器和一些已经完成的库
-
@ChrisNeve 我需要将请求参数记录到我的日志文件中以查看每个参数的详细信息。
-
@Eugene 你能给我举个例子吗?实际上,我没有在这个项目中使用 Spring。
-
@ChrisNeve 你能告诉我解决我的问题的最佳做法是什么吗?