Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.sction.security.log;
  
  
  
 
 public class AccessLogBaseImpl implements AccessLog {
 	private static final Logger logger = Logger
 
 	private String getClientIP(HttpServletRequest request) {
 		String ip = request.getHeader("x-forwarded-for");
 		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
 			ip = request.getHeader("x-forwarded-for");
 		}
 		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
 			ip = request.getHeader("Proxy-Client-IP");
 		}
 		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
 			ip = request.getHeader("X-Real-IP");
 		}
 		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
 			ip = request.getHeader("WL-Proxy-Client-IP");
 		}
 		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
 			ip = request.getHeader("REMOTE-HOST");
 		}
 		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
 			ip = request.getRemoteAddr();
 		}
 		return ip;
 	}
 
 	public void beforeLog(Action aObject objMethod methodObject[] args) {
 		BaseAction ba = null;
 		HttpServletRequest request = null;
 
 		String info = "";
 		ShiroUser user = SctionUtils.getShiroUser();
 		if (obj instanceof BaseAction) {
 			ba = (BaseActionobj;
 			request = ba.getRequest();
 			info = "来自:" + getClientIP(request) + "的";
 
 		}
 
 		if (user != null) {
 			info += "用户:" + user.getName() + "[" + user.getLoginid() + "]";
 		} else if (ba != null) {
 			user = ba.getUser();
 			if (user != null) {
 				info += "用户:" + user.getName() + "[" + user.getLoginid() + "]";
 			} else if (request != null) {
 				info += "用户:" + request.getUserPrincipal();
 			} 
 		}
 
 		.info(info);
 		if (c != null) {
 			String cvalue = "".equals(c.value()) ? obj.getClass()
 					.getSimpleName() : c.value();
 			info = "调用模块:" + c.name() + "[" + cvalue + "]的";
 
 		}
 		String avalue = "".equals(a.value()) ? method.getName() : a.value();
 		info += ("方法:" + a.name() + "[" + avalue + "]");
 		info += "参数为:"+ClassUtils.Obj2Str(args); 
 		.info(info);
 		if (ba != null) {
 			info = "请求参数为:";
 			@SuppressWarnings("unchecked")
 			Enumeration<Stringrpns = request.getParameterNames();
 			while (rpns.hasMoreElements()) {
 				String name = rpns.nextElement();
 				String[] value = request.getParameterValues(name);
 				String values = "";
 				if (value.length == 1) {
 					values = value[0];
 				} else if (value.length > 1) {
 					values += value;
 				}
 				if (rpns.hasMoreElements()) {
 					info += (name + "=" + values + ", ");
 				} else {
 					info += (name + "=" + values);
 				}
 			} 
 			.info(info);
 			info = ("访问者设备信息:");
			info += (request.getHeader("User-Agent") + " Cookie:" + request
					.getHeader("Cookie"));
			.info(info);
		}
	}
	public void AfterLog(Action aObject objMethod methodObject result) {
	}
	public void notPermissionsLog(Action aObject objMethod method,
			Object[] argsString permissions) {
		.error("无权访问,需要权限:" + permissions);
	}
New to GrepCode? Check out our FAQ X