=== anyframe
--context-annotaion.xml
{{{
}}}
--context-transaction.xml
{{{
}}}
--doremi
--root-context.xml
{{{
}}}
-. ProfilingAdvice
{{{
package com.everland.ws.doremi.common.log;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import org.aspectj.lang.ProceedingJoinPoint;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StopWatch;
import com.everland.ws.doremi.common.domain.ReturnModel;
import com.everland.ws.doremi.common.service.impl.XiLogDao;
public class ProfilingAdvice {
@Autowired
private XiLogDao xiLogDao;
public Object trace(ProceedingJoinPoint joinPoint) throws Throwable {
Map log = new HashMap();
StopWatch stopWatch = new StopWatch();
long startTime = System.currentTimeMillis();
long endTime;
SimpleDateFormat formatter = new SimpleDateFormat ( "yyyyMMddHHmmss", Locale.KOREA );
DecimalFormat df = new DecimalFormat("0.##");
Object retVal = joinPoint.proceed();
endTime = System.currentTimeMillis();
endTime = System.currentTimeMillis ();
Date stDate = new Date ( startTime );
Date edDate = new Date ( endTime );
String strStartDate = formatter.format ( stDate );
String strEndDate = formatter.format ( edDate );
String strResDate = df.format((Double.parseDouble(""+endTime) - Double.parseDouble(""+startTime))/1000);
ReturnModel model = (ReturnModel)retVal;
String interfaceId=joinPoint.getTarget().getClass().getName();
String interfaceMethod=joinPoint.getSignature().getName();
log.put("if_id", interfaceId); //인터페이스 아이디
log.put("if_method", interfaceMethod); //인터페이스 메소드
log.put("st_date", strStartDate.substring(0, 8)); //요청 시작일
log.put("st_time", strStartDate.substring(8)); //요청 시간
log.put("ed_date", strEndDate.substring(0, 8)); //응답 시작일
log.put("ed_time", strEndDate.substring(8)); //응답 시간
log.put("res_time", strResDate); //수행시간
log.put("status", model.getZSTATUS() != null ? model.getZSTATUS() : "N"); //처리결과 상태
log.put("message", model.getZMESSAGE()!= null ? model.getZMESSAGE() : "No Header Message"); //결과메세지
// for ( Iterator it = log.entrySet () .iterator () ; it.hasNext () ; ) {
// Map.Entry entry = ( Map.Entry ) it.next () ;
// Object key = entry.getKey () ;
// Object value = entry.getValue () ;
// System.out.println((String)key+" : "+(String)value);
// }
xiLogDao.saveXiLog(log);
return retVal;
// StringBuffer logMessageStringBuffer = new StringBuffer();
// logMessageStringBuffer.append(" 결과메세지 : "+model.getZMESSAGE()+"\r\n");
// logMessageStringBuffer.append(" 인터페이스 아이디 : "+joinPoint.getTarget().getClass().getName()+"\r\n");
// logMessageStringBuffer.append(" 메소드명 : "+joinPoint.getSignature().getName()+"\r\n");
// logMessageStringBuffer.append(" 파라미터 : "+ joinPoint.getArgs()+"\r\n");
// logMessageStringBuffer.append(" 요청 시작일 : "+ strStartDate.substring(0, 8)+"\r\n");
// logMessageStringBuffer.append(" 요청 시간 : "+ strStartDate.substring(8)+"\r\n");
// logMessageStringBuffer.append(" 응답 시작일 : "+ strEndDate.substring(0, 8)+"\r\n");
// logMessageStringBuffer.append(" 응답 시간 : "+ strEndDate.substring(8)+"\r\n");
// logMessageStringBuffer.append(" 수행시간 : "+ strResDate+"\r\n");
// logMessageStringBuffer.append(" 처리결과 상태 : "+ model.getZSTATUS()+"\r\n");
// System.out.println(logMessageStringBuffer.toString());
}
}
}}}