package egovframework.rte.fdl.logging;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import egovframework.rte.fdl.logging.util.LogFileUtil;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath*:META-INF/spring/context-common.xml" })
public class AdvancedNetLogTargetTest {
// @BeforeClass
// public static void runRemoteSocketServer() {
// try {
// // Runtime.getRuntime().exec("runSocketServer.bat", null, new File("."));
// Runtime
// .getRuntime()
// .exec(
// "java -classpath ./lib/log4j-1.3alpha-8-374949.jar org.apache.log4j.net.SimpleSocketServer 4448 ./remote/log4j.xml");
// } catch (BindException be) {
// LogFactory.getLog("sysoutLogger").debug("이미 SimpleSocketServer 가 떠 있습니다.");
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
// 테스트 케이스를 실행하기 전에 반드시 외부 cmd 창에서 프로젝트 루트에 있는 runSocketServer.bat 를 실행할 것!
@Test
public void testSocketAppender() throws Exception {
// socket 로 설정되어 있는 로거
Log log = LogFactory.getLog("socketLogger");
// 로그 기록
log.debug("SocketAppender test");
// remote socket 으로 전송하는 시간만큼 기다림
Thread.sleep(500);
// remote socket 확인
// 테스트 편의를 위해 localhost 에 SimpleSocketServer 를 띄우고 remote log4j.xml 에서는
// socketLogger 로 들어오는 로그를
// ./remote/logs/remoteSample.log 에 기록되게 하였음
File remoteFile = new File("./remote/logs/remoteSample.log");
String lastLine = LogFileUtil.getLastLine(remoteFile);
// 로그파일의 마지막 라인 확인
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm",
java.util.Locale.getDefault());
assertTrue(lastLine.contains(sdf.format(new Date())));
assertTrue(lastLine.endsWith("SocketAppender test"));
}
@Test
public void testSMTPAppender() throws Exception {
System.setProperty("mail.smtp.starttls.enable", "true");
System.setProperty("mail.smtps.auth", "true");
// mail 로 설정되어 있는 로거
Log log = LogFactory.getLog("mailLogger");
// 로그 기록 - SMTPAppender 로 기록하는 로그는 ERROR 레벨로 처리
log.error("SMTPAppender 테스트 test");
// 로컬 pc 에 James 메일 서버(servername = woo)를 설치하고 kimth 유저를 생성하여 테스트 하였음.
// James 는 pop3 도 지원하므로 outlook 으로 연결하여 kimth 계정의 받은 편지함 확인
}
}