spring core advanced : log trace - prototype
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
package com.example.advanced.app.v1;
|
||||
|
||||
import com.example.advanced.trace.TraceStatus;
|
||||
import com.example.advanced.trace.hellotrace.HelloTraceV1;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
public class OrderControllerV1 {
|
||||
|
||||
private final OrderServiceV1 orderService;
|
||||
private final HelloTraceV1 trace;
|
||||
|
||||
@GetMapping("/v1/request")
|
||||
public String request(String itemId) {
|
||||
|
||||
TraceStatus status = null;
|
||||
try {
|
||||
status = trace.begin("OrderController.request()");
|
||||
orderService.orderItem(itemId);
|
||||
trace.end(status);
|
||||
return "ok";
|
||||
} catch (Exception e) {
|
||||
trace.exception(status, e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.example.advanced.app.v1;
|
||||
|
||||
import com.example.advanced.trace.TraceStatus;
|
||||
import com.example.advanced.trace.hellotrace.HelloTraceV1;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
@RequiredArgsConstructor
|
||||
public class OrderRepositoryV1 {
|
||||
|
||||
private final HelloTraceV1 trace;
|
||||
|
||||
public void save(String itemId) {
|
||||
|
||||
TraceStatus status = null;
|
||||
try {
|
||||
status = trace.begin("OrderRepository.save()");
|
||||
// 저장 로직
|
||||
if (itemId.equals("ex")) {
|
||||
throw new IllegalStateException("예외 발생!");
|
||||
}
|
||||
sleep(1000);
|
||||
trace.end(status);
|
||||
} catch (Exception e) {
|
||||
trace.exception(status, e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
private void sleep(int millis) {
|
||||
try {
|
||||
Thread.sleep(millis);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.example.advanced.app.v1;
|
||||
|
||||
import com.example.advanced.trace.TraceStatus;
|
||||
import com.example.advanced.trace.hellotrace.HelloTraceV1;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class OrderServiceV1 {
|
||||
|
||||
private final OrderRepositoryV1 orderRepository;
|
||||
private final HelloTraceV1 trace;
|
||||
|
||||
public void orderItem(String itemId) {
|
||||
TraceStatus status = null;
|
||||
try {
|
||||
status = trace.begin("OrderService.orderItem()");
|
||||
orderRepository.save(itemId);
|
||||
trace.end(status);
|
||||
} catch (Exception e) {
|
||||
trace.exception(status, e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -36,7 +36,7 @@ public class HelloTraceV1 {
|
||||
if (e == null) {
|
||||
log.info("[{}] {}{} time={}ms", traceId.getId(), addSpace(COMPLETE_PREFIX, traceId.getLevel()), status.getMessage(), resultTimeMs);
|
||||
} else {
|
||||
log.info("[{}] {}{} time={}ms ex={}", traceId.getId(), addSpace(EX_PREFIX, traceId.getLevel()), status.getMessage(), resultTimeMs, e.getClass());
|
||||
log.info("[{}] {}{} time={}ms ex={}: 예외 발생!", traceId.getId(), addSpace(EX_PREFIX, traceId.getLevel()), status.getMessage(), resultTimeMs, e.getClass());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user