[ 로그 추적기 - 요구 사항 분석 ]

Untitled

TraceId

import java.util.UUID;

public class TraceId {

    private String id; // [796bccd9]
    private int level; // |--> 몇단계 호출인지.

    public TraceId() {
        this.id = createId();
        this.level = 0;
    }

    // 클래스 내부에서 값 셋팅을 위해 사용하는 생성자
    private TraceId(String id, int level){
        this.id = id;
        this.level = level;
    }

    private String createId() {
        // 생성된 범용 고유 식별자(UUID) : ab99e16f-3cde-4d24-8241-256108c203a2
        // ab99e16f <- 앞 8자리만 사용
        return UUID.randomUUID().toString().substring(0,8);
    }

    public TraceId createNextId(){
        return new TraceId(this.id, this.level + 1);
    }

    public TraceId createPreviousId(){
        return new TraceId(this.id, this.level - 1);
    }

    public boolean isFirstLevel(){ // 첫번째 레벨인지 확인하는 메서드
        return level == 0;
    }

    // getter method() {...}
}

TraceStatus

public class TraceStatus {

    private TraceId traceId; // id와 level을 가지고 있다.
    private Long startTimeMs; // 로그 시작시간
    private String message; // 출력용 메시지 ex) OrderController.request()

    public TraceStatus(TraceId traceId, Long startTimeMs, String message) {
        this.traceId = traceId;
        this.startTimeMs = startTimeMs;
        this.message = message;
		
		// getter method() {...}
}