= 개인정보 사용 이력 관리 == 개요 사용자 정보를 조회한 이력을 남긴다. 관련 법에 따라 일정기간 동안 보관한다. === 사용자 정보 조회 이력 관리 * UserController에서 사용자 정보 관련 메서드 호출시, UserService의 writeUserHistoryLog 메서드를 호출하고 있다. * log4j2.xml에 설정한 파일에 이력이 남는다. .UserController.class [source,java] ---- @Operation(summary = "사용자 목록 조회") @GetMapping("/auth/users") public PagingResult getUserPagingList( @ModelAttribute UserSearchDto searchDto) { PagingResult resultPage = userService.getUserPagingList(searchDto); // 개인정보조회 이력 남김 userService.writeUserHistoryLog(resultPage); return resultPage; } @Operation(summary = "사용자 조회 (by EP ID)") @GetMapping("/auth/users/{userId}") public User userInfo(@Parameter(description = "EP ID", required = true) @PathVariable(required = true) String userId) { User userInfo = userService.getUserById(userId); // 개인정보조회 이력 남김 userService.writeUserHistoryLog(userInfo); return userInfo; } ---- .UserServiceImpl.class [source,java] ---- @Override public void writeUserHistoryLog(Object returnValue) { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest(); String requestUri = request.getRequestURI(); String requestMethod = request.getMethod(); User user = Account.currentUser(); if(ObjectUtils.isNotEmpty(user)) { // 로그인된 사용자 try { HistoryLog log = new HistoryLog(); log.setLogId(idGenService.getNextStringId()); log.setNodeId(nodeId); if(ObjectUtils.isNotEmpty(user)) { log.setWorkerId(user.getUserId()); log.setWorkerName(user.getUserName()); } log.setWorkDatetime(DateTime.now().toString()); log.setRemoteAddr(webUtil.getClientIp(request)); log.setRequestMethod(requestMethod); log.setRequestUri(requestUri); log.setApiResult(returnValue); String jsonVal = mapper.writeValueAsString(log); USER_HISTORY_LOG.info(jsonVal); } catch (JsonProcessingException e) { log.warn(e.getMessage()); } } } ---- .log4j2.xml [source,xml] ---- %d %-5p [%t] %-17c{2} \(%13F:%L\) - %m%n ----