package com.eactive.eai.common.util; import org.apache.commons.lang3.StringUtils; import org.slf4j.MDC; public class TxSiftContext { /** * 거래 시작 시 SIFT discriminator를 MDC에 등록한다. * SIFT가 비활성화 상태이면 아무 작업도 하지 않는다. */ public static boolean begin(String discriminatingValue) { if (!Logger.isSiftEnabled()) return false; if(MDC.get(Logger.DISCRIMINATOR) == null) { MDC.put(Logger.DISCRIMINATOR, discriminatingValue); return true; } return false; } /** * 거래 종료 시 MDC에 등록된 SIFT appender를 닫고 MDC를 정리한다. * begin() 에서 MDC가 설정되지 않았으면 아무 작업도 하지 않는다. */ public static void end() { String discriminatingValue = MDC.get(Logger.DISCRIMINATOR); if (StringUtils.isBlank(discriminatingValue)) return; Logger.closeSiftAppender(discriminatingValue); MDC.remove(Logger.DISCRIMINATOR); } }