فهرست منبع

접근 로그 수집하는 부분 추가

pangs 6 سال پیش
والد
کامیت
340ed1b025

+ 20 - 0
src/main/java/com/icontrols/kakao/common/utils/CommonUtil.java

@@ -9,6 +9,8 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.servlet.http.HttpServletRequest;
+
 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.JsonMappingException;
@@ -143,4 +145,22 @@ public class CommonUtil {
 		
 		return KAKAO_RESULT.FAIL_INVALID_CLIENT;
 	}
+	
+	public static String getClientIP(HttpServletRequest request) {
+		String ip = request.getHeader("X-FORWARDED-FOR");
+		
+		if(ip == null || ip.length() == 0) {
+			ip = request.getHeader("Proxy-Client-IP");
+		}
+		
+		if(ip == null || ip.length() == 0) {
+			ip = request.getHeader("WL-Proxy-Client-IP"); //웹 로직
+		}
+		
+		if(ip == null || ip.length() == 0) {
+			ip = request.getRemoteAddr();
+		}
+		
+		return ip;
+	}
 }

+ 21 - 1
src/main/java/com/icontrols/kakao/controller/KakaoDanziController.java

@@ -5,7 +5,6 @@ import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.tomcat.util.codec.binary.Base64;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -23,6 +22,8 @@ import com.icontrols.kakao.common.SERVERINFO;
 import com.icontrols.kakao.common.TYPE;
 import com.icontrols.kakao.common.utils.CommonUtil;
 import com.icontrols.kakao.common.utils.JWTUtils2;
+import com.icontrols.kakao.entity.AccessLog;
+import com.icontrols.kakao.repo.AccessLogRepository;
 import com.icontrols.kakao.service.KakaoExtensionService;
 
 @RestController
@@ -33,6 +34,9 @@ public class KakaoDanziController {
 	@Autowired
 	KakaoExtensionService kakaoService;
 	
+	@Autowired
+	AccessLogRepository accessLogRepository;
+	
 	/**
 	 * 중계 서버에서 오는 요청을         분기 처리를 진행한다.
 	 * @param header
@@ -47,6 +51,22 @@ public class KakaoDanziController {
 														) throws Exception{
 		
 		logger.debug("HEADER --> " + header);
+		
+		try {
+			String requestId = (String)params.get("id");
+			String requestType = (String) params.get("type");
+			String authorization = (String) params.get("authorization");
+			String body = params.get("body").toString();
+			
+			if(body.length() > 255) body = body.substring(0, 255);
+			
+			AccessLog log = new AccessLog(requestId, authorization, requestType, body);
+			accessLogRepository.save(log);
+		}catch(Exception e) {
+			logger.error("log 저장 실패 " + e.getMessage());
+			e.printStackTrace();
+		}
+		
 		if(!header.containsKey(SERVERINFO.HEADER_AUTH)) {
 			params.put(KEY_INFO.HTTP_KEY_ERROR, KAKAO_RESULT.getErrorInfo(KAKAO_RESULT.FAIL_INVALID_CLIENT));
 			return params;

+ 88 - 0
src/main/java/com/icontrols/kakao/entity/AccessLog.java

@@ -0,0 +1,88 @@
+package com.icontrols.kakao.entity;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "tbl_access_log")
+public class AccessLog implements Serializable{
+	private static final long serialVersionUID = -2056140273228887516L;
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.AUTO)
+	private long id;
+	
+
+	@Column(name = "request_id")
+	private String requestId;
+	
+	@Column(name = "authorization")
+	private String authorization;
+	
+	@Column(name = "req_type")
+	private String reqType;
+	
+	@Column(name = "body")
+	private String body;
+
+	public AccessLog(String requestId, String authorization, String reqType, String body) {
+		super();
+		this.requestId = requestId;
+		this.authorization = authorization;
+		this.reqType = reqType;
+		this.body = body;
+	}
+
+	public long getId() {
+		return id;
+	}
+
+	public void setId(long id) {
+		this.id = id;
+	}
+
+	public String getRequestId() {
+		return requestId;
+	}
+
+	public void setRequestId(String requestId) {
+		this.requestId = requestId;
+	}
+
+	public String getAuthorization() {
+		return authorization;
+	}
+
+	public void setAuthorization(String authorization) {
+		this.authorization = authorization;
+	}
+
+	public String getReqType() {
+		return reqType;
+	}
+
+	public void setReqType(String reqType) {
+		this.reqType = reqType;
+	}
+
+	public String getBody() {
+		return body;
+	}
+
+	public void setBody(String body) {
+		this.body = body;
+	}
+
+	@Override
+	public String toString() {
+		return "AccessLog [id=" + id + ", requestId=" + requestId + ", authorization=" + authorization + ", reqType="
+				+ reqType + ", body=" + body + "]";
+	}
+	
+}

+ 8 - 0
src/main/java/com/icontrols/kakao/repo/AccessLogRepository.java

@@ -0,0 +1,8 @@
+package com.icontrols.kakao.repo;
+
+import org.springframework.data.repository.CrudRepository;
+
+import com.icontrols.kakao.entity.AccessLog;
+
+public interface AccessLogRepository extends CrudRepository<AccessLog, Long> {
+}