이전 블로그 글에서 로그를 시작한다고 했다
https://pushvalue.tistory.com/59
로그 남기기
로그를 남기기전에 겪은 문제점 out 파일 관리 문제 따로 로그를 남기지않을때 nohup.out 파일에서 기본 에러문구를 볼수 있었다 계속해서 기본 로그가 쌓이는 형태인데 나름 관리를 해주겠다고 서
pushvalue.tistory.com
로깅 목표
1 실행중인 서비스의 페이지 활성화,기능,api호출의 기록
2 로깅 모듈의 로그파일 관리
3 추후 구현할 testCase 의 성공 여부 확인
목표의 첫번째
페이지 로딩의 기록
어떤 페이지가 가장 자주 활성화 되고 사용 되는지 시각적으로 확인하고싶었다
페이지 활성화인 만큼 컨트롤러의 페이지를 반환하는 메서드에 로그를 남겼다
@GetMapping("/")
public String docList(HttpSession httpSession,Model model){
LoginInfo loginInfo = (LoginInfo)httpSession.getAttribute("loginInfo");
List<Doc> docs = docService.list();
model.addAttribute("loginInfo",loginInfo);
model.addAttribute("docs",docs);
LOGGER.info("메인 페이지가 활성화되었습니다.");
return "doc/docList";
}
두번째 목표
나의 서비스중 가장 무거운 기능을 담당하는
스팀 api 파싱 기능이다
일 1회,주1회정도 사용,갱신이 되기때문에
홈페이지에 api 호출 버튼을 두지않고 uri로 사용하도록 했다
@GetMapping("/appList")
public String appList() {
appService.rowClear();
appService.apiParsing();
return "home";
}
하지만 페이지 반환이 아닌 DB 의 데이터 갱신이 목표인 기능이기 때문에
해당 메서드에 로그를 남겼다
public void apiParsing() {
long startTime = System.currentTimeMillis();
String steamUrl = "https://api.steampowered.com/ISteamApps/GetAppList/v2/";
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response = restTemplate.getForEntity(steamUrl, String.class);
ObjectMapper objectMapper = new ObjectMapper();
JsonNode root = null;
try {
root = objectMapper.readTree(response.getBody());
} catch (IOException e) {
e.printStackTrace();
}
JsonNode appList = root.path("applist").path("apps");
List<App> apps = new ArrayList<>();
for (JsonNode app : appList) {
App app1 = new App();
app1.setApp_id(app.path("appid").asInt());
app1.setApp_name(app.path("name").asText());
apps.add(app1);
}
long endTime = System.currentTimeMillis();
long elapsedTime = endTime - startTime;
appRepository.save(apps);
LOGGER.info("API 파싱 작업이 완료되었습니다. 소요시간: " + elapsedTime + "ms");
}
가장 무거운 기능인 만큼
작동 시간이 알고싶었다
알고리즘 문제를 풀고난뒤
할고리즘의 작동 시간을 체크하는 방법을
api파싱 메서드에 똑같이 적용 해보았다
public void apiParsing() {
long startTime = System.currentTimeMillis();
// 기능부분 생략
long endTime = System.currentTimeMillis();
long elapsedTime = endTime - startTime;
logger.info("API 파싱 작업이 완료되었습니다. 소요시간: " + elapsedTime + "ms");
}
해당 기능은 로컬에서 실행한 시간이고
원격지에서 원격지 자원에 의한 시간과 비교할수도 있다!
오라클 무료 인스턴스를 사용하기때문에 아마 더 오랜시간이 걸릴것 같다
그 외에
신규유저의 회원가입,
유저의 글 작성,
유저의 로그인 성공,실패
기존유저의 유저정보 수정 등등의 기능에
로그를 남겼다
'걸어서 개발 속으로' 카테고리의 다른 글
test code (0) | 2023.05.26 |
---|---|
test case를 위한 test DB (0) | 2023.05.19 |
로그 남기기 (0) | 2023.05.03 |
LFG 배포 자동화 (0) | 2023.03.26 |
오라클 인스턴스 생성 기록 (0) | 2023.03.25 |
댓글