웹로그관리는 사용자의 웹페이지 접근시 발생하는 각종 로그를 검색, 조회하는 기능을 제공한다.
웹로그관리는 웹로그의 등록, 조회, 목록, 삭제, 요약의 기능을 수반한다.
① 웹로그등록 : 웹로그정보를 등록한다. - Interceptor 기능을 이용 ② 웹로그조회 : 웹로그정보의 상세내용을 조회한다. ③ 웹로그목록 : 웹로그정보의 목록을 검색, 조회한다. ④ 웹로그삭제 : 웹로그정보를 삭제한다. - 실행환경의 Scheduling 기능을 이용 ⑤ 웹로그요약 : 웹로그정보를 요약하여 Summary를 생성한다. - 실행환경의 Scheduling 기능을 이용
웹로그관리 패키지는 요소기술의 공통(cmm) 패키지에 대해서만 직접적인 함수적 참조 관계를 가진다. 하지만, 컴포넌트 배포 시 오류 없이 실행되기 위하여 패키지 간의 참조관계에 따라 달력 패키지와 함께 배포 파일을 구성한다.
유형 | 대상소스명 | 비고 |
---|---|---|
Controller | egovframework.com.sym.log.wlg.web.EgovWebLogController.java | 웹로그 관리를 위한 컨트롤러 클래스 |
Service | egovframework.com.sym.log.wlg.service.EgovWebLogService.java | 웹로그 관리를 위한 서비스 인터페이스 |
ServiceImpl | egovframework.com.sym.log.wlg.service.impl.EgovWebLogServiceImpl.java | 웹로그 관리를 위한 서비스 구현 클래스 |
Model | egovframework.com.sym.log.wlg.service.WebLog.java | 웹로그 관리를 위한 Model 클래스 |
DAO | egovframework.com.sym.log.wlg.service.impl.WebLogDAO.java | 웹로그 관리를 위한 데이터처리 클래스 |
Interceptor | egovframework.com.sym.log.wlg.web.EgovWebLogInterceptor.java | 웹로그 등록을 위한 Interceptor 클래스 |
Scheduler | egovframework.com.sym.log.wlg.service.EgovWebLogScheduling.java | 웹로그 삭제, 요약을 위한 Scheduling 클래스 |
JSP | /WEB-INF/jsp/egovframework/com/sym/log/wlg/EgovWebLogList.jsp | 웹로그 목록을 위한 jsp페이지 |
JSP | /WEB-INF/jsp/egovframework/com/sym/log/wlg/EgovWebLogInqire.jsp | 웹로그 조회를 위한 jsp페이지 |
QUERY XML | resources/egovframework/sqlmap/com/sym/log/wlg/EgovWebLog_SQL_Mysql.xml | 웹로그 관리 MySQL용 QUERY XML |
QUERY XML | resources/egovframework/sqlmap/com/sym/log/wlg/EgovWebLog_SQL_Oracle.xml | 웹로그 관리 Oracle용 QUERY XML |
QUERY XML | resources/egovframework/sqlmap/com/sym/log/wlg/EgovWebLog_SQL_Tibero.xml | 웹로그 관리 Tibero용 QUERY XML |
QUERY XML | resources/egovframework/sqlmap/com/sym/log/wlg/EgovWebLog_SQL_Altibase.xml | 웹로그 관리 Altibase용 QUERY XML |
Idgen XML | resources/egovframework/spring/context-idgen.xml | 웹로그 관리 Id생성 Idgen XML |
CREATE TABLE COMTECOPSEQ ( table_name varchar(16) NOT NULL, next_id DECIMAL(30) NOT NULL, PRIMARY KEY (table_name)); INSERT INTO COMTECOPSEQ VALUES('WEBLOG_ID','0');
<bean name="egovWebLogIdGnrService" class="egovframework.rte.fdl.idgnr.impl.EgovTableIdGnrService" destroy-method="destroy"> <property name="dataSource" ref="dataSource" /> <property name="strategy" ref="webLogStrategy" /> <property name="blockSize" value="1"/> <property name="table" value="COMTECOPSEQ"/> <property name="tableName" value="WEBLOG_ID"/> </bean> <bean name="webLogStrategy" class="egovframework.rte.fdl.idgnr.impl.strategy.EgovIdGnrStrategyImpl"> <property name="prefix" value="WEBLOG_" /> <property name="cipers" value="13" /> <property name="fillChar" value="0" /> </bean>
테이블명 | 테이블명(영문) | 비고 |
---|---|---|
웹로그 | COMTNWEBLOG | 웹로그 정보를 관리한다. |
웹로그요약 | COMTSWEBLOGSUMMARY | 웹로그 요약정보를 관리한다. |
<bean id="egovWebLogInterceptor" class="egovframework.com.sym.log.web.EgovWebLogInterceptor" /> <bean id="webLogMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors"> <list> <ref bean="egovWebLogInterceptor" /> </list> </property> </bean>
웹로그 등록 기능구현을 위하여 Interceptor를 설정한다.
package egovframework.com.sym.log.web; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import egovframework.com.sec.ram.security.userdetails.util.EgovUserDetailsHelper; import egovframework.com.sym.log.service.EgovLogManageService; import egovframework.com.sym.log.service.WebLog; import egovframework.com.uat.uia.service.LoginVO; public class EgovWebLogInterceptor extends HandlerInterceptorAdapter { @Resource(name="EgovLogManageService") private EgovLogManageService logManageService; /** * 웹 로그정보를 생성한다. * * @param HttpServletRequest request, HttpServletResponse response, Object handler * @return * @throws Exception */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modeAndView) throws Exception { WebLog webLog = new WebLog(); String reqURL = request.getRequestURI(); String uniqId = ""; /* Authenticated */ Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(isAuthenticated.booleanValue()) { LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); uniqId = user.getUniqId(); } webLog.setUrl(reqURL); webLog.setRqesterId(uniqId); webLog.setRqesterIp(request.getRemoteAddr()); logManageService.logInsertWebLog(webLog); } }
<!-- 웹 로그 요약 --> <bean id="webLogging" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="egovLogManageScheduling" /> <property name="targetMethod" value="webLogSummary" /> <property name="concurrent" value="false" /> </bean> <!-- 웹 로그 요약 트리거--> <bean id="webLogTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="webLogging" /> <!-- 시작하고 1분후에 실행한다. (milisecond) --> <property name="startDelay" value="60000" /> <!-- 매 1시간마다 실행한다. (milisecond) --> <property name="repeatInterval" value="3600000" /> </bean> <!-- 스케쥴러 등록--> <bean id="logSummaryScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="sysLogTrigger" /> <ref bean="webLogTrigger" /> <ref bean="trsmrcvLogTrigger" /> <ref bean="userLogTrigger" /> </list> </property> </bean>
웹로그 삭제, 요약 기능구현을 위하여 Scheduling을 설정한다.
@Service("egovWebLogScheduling") public class EgovWebLogScheduling { @Resource(name="EgovWebLogService") private EgovWebLogService webLogService; /** * 웹 로그정보를 요약한다. * 전날의 로그를 요약하여 입력하고, 일주일전의 로그를 삭제한다. * * @param * @return * @throws Exception */ public void webLogSummary() throws Exception { webLogService.logInsertWebLogSummary(); } }
웹로그관리는 웹로그 목록조회, 웹로그 상세조회 기능으로 구분된다.
웹로그 목록은 페이지 당 10건씩 조회되며 페이징은 10페이지씩 이루어진다. 검색조건은 발생일자와 URL에 대해서 수행된다.
N/A
Action | URL | Controller method | QueryID |
---|---|---|---|
목록조회 | /sym/log/wlg/SelectWebLogList.do | selectWebLogInf | “WebLogDAO.selectWebLogInf”, |
“WebLogDAO.selectWebLogInfCnt” |
웹로그 상세조회 기능을 수행하기 위해서는 상세보기 버튼을 클릭한다.
웹로그 목록의 상세조회 페이지를 보여준다.
N/A
Action | URL | Controller method | QueryID |
---|---|---|---|
상세조회 | /sym/log/wlg/InqireWebLog.do | selectWebLog | “WebLogDAO.selectWebLog” |
웹로그 상세조회는 팝업창으로 구성되며, 닫기 버튼을 클릭하면 창을 닫는다.