참고:
http://www.yunsobi.com/tt/subby/99
참고:
http://decoder.tistory.com/37
첨부된 파일은 검색에서 나온 것으로 문제 있으면 삭제하겠습니다.
package com.omp.bp.cms.batchreg.service;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.log4j.Logger;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.XMLOutputter;
import com.omp.bp.cms.batchreg.BatchRegisterErrorConstants;
import com.omp.bp.cms.util.DateUtil;
/**
* 배치 등록 관련 에러 로그 처리 클래스. 콘텐츠 하나에 대한 에러로그XML 생성.
* @author Sung,HongJe
*
*/
public class BatchRegisterError {
private final static Logger log = Logger.getLogger(BatchRegisterError.class);
private final String ERROR_FILE_NAME_HEADER = "ERROR_";
private final String ERROR_FILE_EXT = "XML";
/**
* 에러 로그 파일 생성
* @param ftpRepoPath ftp 디렉토리 패스
* @param contentId 콘텐츠ID
* @param contentType 콘텐츠타입 - C:채널, E:콘텐츠(에피소드)
* @param errorCode 에러코드
* @throws IOException
*/
public void makeErrorLog(String ftpRepoPath, String contentId, String contentType, int errorCode) throws IOException {
// 1. ERROR 파일패스 설정 : ftpRepo/ERROR_[TYPE]_[CID].XML
// 2. 에러 코드를 이용해서 XML 내용 설정
// 3. 파일로 저장
// ftpRepo/ERROR_C_000050151.XML
String filePath = ftpRepoPath + File.separator + ERROR_FILE_NAME_HEADER + contentType.toUpperCase() + "_" + contentId + "." + ERROR_FILE_EXT;
String errorMsg = BatchRegisterErrorConstants.getErrorMsg(errorCode);
// XML 내용 생성
Document xmlDoc = makeErrorXML(contentId, errorCode, errorMsg, DateUtil.getToday() + DateUtil.getTime());
File file = new File(filePath);
FileOutputStream out = null;
try {
if(!file.exists()) { // 로그 파일 없으면 생성
File dir = new File(ftpRepoPath); // ftp 디렉토리가 없으면 생성
if(!dir.exists())
dir.mkdir();
file.createNewFile();
}
out = new FileOutputStream(file); XMLOutputter serializer = new XMLOutputter(); serializer.output(xmlDoc, out); out.flush();
}
catch (IOException e) {
log.error("BatchRegisterError.makeErrorLog 로그 파일 작성 중 예외 발생", e);
throw e;
}
finally {
if(out != null) {
try {
out.close();
}
catch (IOException e) {
log.error("BatchRegisterError.makeErrorLog 로그 파일 작성 종료 중 예외 발생", e);
}
}
}
}
/**
* 에러 메시지를 담는 XML을 생성 후 반환
* @param contentId
* @param errorCode
* @param errorMsg
* @param dateTime
* @return
*/
private Document makeErrorXML(String contentId, int errorCode, String errorMsg, String dateTime) {
Document doc = new Document();
Element error_log = new Element("error_log"); // root
Element content_id = new Element("content_id"); content_id.setAttribute("id", contentId); // set CID
Element msg = new Element("msg"); msg.setText(errorMsg);
Element code = new Element("code"); code.setText(String.valueOf(errorCode));
Element time = new Element("time"); time.setText(DateUtil.getToday() + DateUtil.getTime());
content_id.addContent(msg); content_id.addContent(code); content_id.addContent(time);
error_log.addContent(content_id);
doc.addContent(error_log);
return doc;
}
}
|
볼드체를 참고하기