package egovframework.rte.fdl.logging; import static org.junit.Assert.assertTrue; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import egovframework.rte.fdl.logging.sample.LogLayoutSample; import egovframework.rte.fdl.logging.util.LogFileUtil; import org.junit.Test; import org.junit.runner.RunWith; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath*:META-INF/spring/context-common.xml" }) public class Slf4JLoggerTest { /** * 아래는 SLF4J와 Log4j를 함께 사용하는 테스트 메소드 * slf4jLogger: level=DEBUG, appender=Console * slf4jFileLogger: level=DEBUG, appender=File * */ @Test public void testSlf4jLogger() throws Exception { // log4j2.xml에서 Logger name이 "egovframework"인 Logger 인스턴스 생성 Logger slf4jLogger = LoggerFactory.getLogger("egovframework"); // Parameterized 방식으로 로그 출력 - 변수1개 String arg = "some argument"; slf4jLogger.debug("Slf4jLoggerTest - {}", arg); // 하단 Console에서 로그 확인 // log4j2.xml에서 Logger name이 "egovframework.rte.~.LogLayoutSample"인 Logger 인스턴스 생성 Logger slf4jFileLogger = LoggerFactory.getLogger(LogLayoutSample.class); // Parameterized 방식으로 로그 출력 - Object 타입 Object[] arguments = new Object[3]; arguments[0] = "1st"; arguments[1] = Integer.valueOf("2"); arguments[2] = new Date().toString(); slf4jFileLogger.debug("Slf4jLoggerTest - {} {} {}", arguments); File logFile = new File("./logs/file/sample.log"); // 로그 확인 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm", java.util.Locale.getDefault()); assertTrue(LogFileUtil.getLastLine(logFile).contains(sdf.format(new Date()))); assertTrue(LogFileUtil.getLastLine(logFile).contains("Slf4jLoggerTest - 1st 2 "+ (new Date()).toString().substring(0, 16))); } }