로그 추적기
로그 추적기를 위한 기반 데이터를 가지고 있는 클래스
/**
* 트랜잭션 ID와 깊이를 갖는 클래스
*/
@Getter
@AllArgsConstructor(access = AccessLevel.PRIVATE)//외부에서 직접 생성할 일이 없다.
public class TraceId {
private String id;
private int level;
//생성 시점에 트랜잭션 ID와 레벨 초기화
public TraceId() {
id = createId();
level = 0;
}
private String createId() {
//앞 8자리만 사용
return UUID.randomUUID().toString().substring(0, 8);
}
//트랜잭션 ID는 그대로, 깊이를 증가한다.
public TraceId createNextId() {
return new TraceId(id, level + 1);
}
//트랜잭션 ID는 그대로, 깊이를 감소한다.
public TraceId createPreviousId() {
return new TraceId(id, level - 1);
}
//첫 번째 레벨 여부를 확인한다.
public boolean isFirstLevel() {
return level == 0;
}
}
/**
* 로그를 시작할 때의 상태 정보를 갖는 클래스
*/
@AllArgsConstructor
@Getter
public class TraceStatus {
private TraceId traceId;//트랜잭션 ID와 레벨을 갖고 있다.
private Long startTimeMs;//로그 시작 시간, 이 시간을 기준으로 전체 수행 시간을 구할 수 있다.
private String message;//시작 시 사용한 메시지, 로그 종료까지 이 메시지를 사용해서 출력해야 한다.
}Last updated