小记这个简单的方法。
/**
* 获取客户端IP
*
* @param request
* @return
*/
private String getIpAddr(HttpServletRequest request) {
String remoteAddr = request.getHeader("X-Forwarded-For");
if (StringUtil.isBlank(remoteAddr)) {
remoteAddr = request.getHeader("Proxy-Client-IP");
}
if (StringUtil.isBlank(remoteAddr)) {
remoteAddr = request.getHeader("WL-Proxy-Client-IP");
}
return remoteAddr != null ? remoteAddr : request.getRemoteAddr();
}
这里面我是用在项目里面需要记录日志的地方。记录日志通过拦截器实现,继承org.springframework.web.servlet.handler.HandlerInterceptorAdapter这个类。在重写的方法中
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
if (handler instanceof HandlerMethod) {
//这里是权限判断的部分
PermissionRequester accessPermissions = ((HandlerMethod) handler).getMethodAnnotation(PermissionRequester.class);
String[] perms = getAnnotationValue(accessPermissions);
if (ArrayUtil.isEmptyArray(perms)) {
return;
}
try {
//日志记录
LogThread logThread = new LogThread(getIpAddr(request),
userHandler.getCurrentUserId(),
request.getRequestURL().toString(),
perms,
new Date());
Thread thread = new Thread(logThread);
thread.start();
} catch (Exception e) {
LOGGER.errorMessage("创建系统日志出现异常", e);
}
}
}
本文介绍了一种在项目中记录日志的简单方法,利用拦截器实现,并详细解释了如何在权限判断部分使用注解。同时,展示了如何获取客户端IP地址并记录日志线程。
1万+

被折叠的 条评论
为什么被折叠?



