修改 404 Action Not Found 日志信息,添加 ip 输出

public class MyActionHandler extends ActionHandler{
	private static final Log log = Log.getLog(MyActionHandler.class);
	public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
		if (target.indexOf('.') != -1) {
			return ;
		}
		String[] urlPara = {null};
		Action action = getAction(target, urlPara);
		if (action == null) {
			if (log.isWarnEnabled()) {
				String qs = request.getQueryString();
				log.warn(IpUtils.getIpAddress(request)+" -- 404 Action Not Found: " + (qs == null ? target : target + "?" + qs));
			}
			renderManager.getRenderFactory().getErrorRender(404).setContext(request, response).render();
			return ;
		}

		super.handle(target, request, response, isHandled);
	}
}


主要是继承ActionHandler,覆盖掉父类的 handler 方法,加上的 ip 输出:

log.warn(IpUtils.getIpAddress(request)+" -- 404 Action Not Found: " + (qs == null ? target : target + "?" + qs));

在public void configHandler(Handlers me)中添加自定义MyActionHandler

public void configHandler(Handlers me) {
	me.setActionHandler(new MyActionHandler());
}


评论区

JFinal

2020-11-16 16:08

对于 action 找不到的这是最简洁的方案了,另一个要注意的是 ActionHandler 中的 handleActionException(...) 方法中也有一个处理 404 的分支,如果不处理的话可以略过