목차

웹로그관리

개요

웹로그관리는 사용자의 웹페이지 접근시 발생하는 각종 로그를 검색, 조회하는 기능을 제공한다.

설명

웹로그관리는 웹로그의 등록, 조회, 목록, 삭제, 요약의 기능을 수반한다.

  ① 웹로그등록 : 웹로그정보를 등록한다. - Interceptor 기능을 이용 
  ② 웹로그조회 : 웹로그정보의 상세내용을 조회한다.
  ③ 웹로그목록 : 웹로그정보의 목록을 검색, 조회한다.
  ④ 웹로그삭제 : 웹로그정보를 삭제한다. - 실행환경의 Scheduling 기능을 이용
  ⑤ 웹로그요약 : 웹로그정보를 요약하여 Summary를 생성한다. - 실행환경의 Scheduling 기능을 이용 

패키지 참조 관계

웹로그관리 패키지는 요소기술의 공통(cmm) 패키지에 대해서만 직접적인 함수적 참조 관계를 가진다. 하지만, 컴포넌트 배포 시 오류 없이 실행되기 위하여 패키지 간의 참조관계에 따라 달력 패키지와 함께 배포 파일을 구성한다.

클래스

유형대상소스명비고
Controlleregovframework.com.sym.log.wlg.web.EgovWebLogController.java웹로그 관리를 위한 컨트롤러 클래스
Serviceegovframework.com.sym.log.wlg.service.EgovWebLogService.java웹로그 관리를 위한 서비스 인터페이스
ServiceImplegovframework.com.sym.log.wlg.service.impl.EgovWebLogServiceImpl.java웹로그 관리를 위한 서비스 구현 클래스
Modelegovframework.com.sym.log.wlg.service.WebLog.java웹로그 관리를 위한 Model 클래스
DAOegovframework.com.sym.log.wlg.service.impl.WebLogDAO.java웹로그 관리를 위한 데이터처리 클래스
Interceptoregovframework.com.sym.log.wlg.web.EgovWebLogInterceptor.java웹로그 등록을 위한 Interceptor 클래스
Scheduleregovframework.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 XMLresources/egovframework/sqlmap/com/sym/log/wlg/EgovWebLog_SQL_Mysql.xml웹로그 관리 MySQL용 QUERY XML
QUERY XMLresources/egovframework/sqlmap/com/sym/log/wlg/EgovWebLog_SQL_Oracle.xml웹로그 관리 Oracle용 QUERY XML
QUERY XMLresources/egovframework/sqlmap/com/sym/log/wlg/EgovWebLog_SQL_Tibero.xml웹로그 관리 Tibero용 QUERY XML
QUERY XMLresources/egovframework/sqlmap/com/sym/log/wlg/EgovWebLog_SQL_Altibase.xml웹로그 관리 Altibase용 QUERY XML
Idgen XMLresources/egovframework/spring/context-idgen.xml웹로그 관리 Id생성 Idgen XML

클래스 다이어그램

ID Generation

ID Generation 관련 DDL 및 DML

  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');
 

ID Generation 환경설정(context-idgen.xml)

  <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웹로그 요약정보를 관리한다.

Interceptor

egov-com-interceptor.xml

  <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);
 
  }
}

Scheduling

context-scheduling-sym-log-wlg.xml (src/main/resources/egovframework/spring/com/context-scheduling-sym-log-wlg.xml)

  <!-- 웹 로그 요약  -->
  <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

관련화면 및 수행메뉴얼

ActionURLController methodQueryID
목록조회/sym/log/wlg/SelectWebLogList.doselectWebLogInf“WebLogDAO.selectWebLogInf”,
“WebLogDAO.selectWebLogInfCnt”

웹로그 상세조회 기능을 수행하기 위해서는 상세보기 버튼을 클릭한다.

웹로그 상세조회

비즈니스 규칙

웹로그 목록의 상세조회 페이지를 보여준다.

관련코드

N/A

관련화면 및 수행메뉴얼

ActionURLController methodQueryID
상세조회/sym/log/wlg/InqireWebLog.doselectWebLog“WebLogDAO.selectWebLog”

웹로그 상세조회는 팝업창으로 구성되며, 닫기 버튼을 클릭하면 창을 닫는다.

참고자료