Spring Webflux project 에서 로그 추적성 제공하기
requirement * 로그에 추적가능한 id를 남기고 싶다. * 로그 호출 시 일일이 포함시키지 않고 자동으로 설정되게 하고 싶다. * MicroService 로 여러 서비스가 연계될때 동일한 식별자로 연결되게 하고 싶다. related object * Spring Boot uses Micrometer Observation * Facade 역할을 하는 Micrometer 를 이용하여 tracing 구현체에 따라 적용 가능. (openzipkin, opentelemetry ... ) * Webflux는 Reactive 수행으로 Thread간 이동이 빈번하여 Tracing Context Propagation 이 필수 * Spring Boot Actuator 와 결합하여 간단한 설정만으로 기능 제공 implementation build.gradle dependencies { ... implementation org.springframework.boot:spring-boot-starter-actuator // case 1 for OpenZipkin Brave implementation 'io.micrometer:micrometer-tracing-bridge-brave' // case 2 for opentelemetry // implementation 'io.micrometer:micrometer-tracing-bridge-otel' ... } or logback-spring.xml ... %X{traceId:-NONE} ... example 2024-06-08T20:38:08.217+02:00 INFO [94739f90c9e13ec3a7048d5dfba4c499,61c824a2d63bbe99] 1234 --- [ctor-http-nio-2] lepffm.Service2Controller : logging... 남기는 말 servlet project 인 경우 spring.reactor.context-propagation 만 제거하면 됨 reference https://docs.spring.io/spring-boot/reference/actuator/observability.html https://docs.spring.io/spring-boot/reference/actuator/tracing.html https://micrometer.io/docs/tracing 원문 https://github.com/lepffm/issuance/issues/176