웹 애플리케이션 로깅 및 오류 처리 기법 웹 애플리케이션 로깅의 필요성을 이해한다 로깅의 분류 및 구현 방안을 학습한다

Slides:



Advertisements
Similar presentations
Chap02 자바환경과 자바 프로그램 Section 1 : 자바 개발 환경 Section 2 : 자바 통합 환경 Section 3 : 자바 응용 프로그램과 애플릿 프로그램 Section 4 : 자바 응용 프로그램 Section 5 : 자바 애플릿 프로그램.
Advertisements

JSP 정리 레퍼런스: JSP 2.1 웹 프로그래밍 (최범균, 가메출판사). 목차 1. Directive - 인코딩 - 오류처리 2. Implicit Object - 쿠키/세션 3. Action Tag 4. JDBC/DBCP 프로그래밍, 파일업로드 5. Expression.
Python Socket/HTTP overmania. 목표  소켓을 이용하여 기본적인 서버 - 클라이언트 모델을 구현할 수 있다.  간단한 웹서버를 소켓을 이용하여 작성할 수 있다.
Chapter 02. 웹에 대한 이해. Chapter 02. 웹에 대한 이해 웹의 역사 HTTP 웹 애플리케이션 기술.
국가도서관통계시스템 수치입력자 매뉴얼 이의신청 방법 Version. 1.0.
Spring MVC ㅇ 스프링 MVC 구성요소 설명 DispatcherServlet 클라이언트의 요청을 컨트롤러에게 전달하고
Introduction to Servlets
Introduction to Django
최신 소프트웨어 공학 개요 11.1 컴포넌트 기반 소프트웨어 개발 11.2 웹 엔지니어링 11.3 정형적 명세 기법
Network Lab. Yong bae, Kim
Python Bottle Web Framework
JPetStore 분석자료 1.0 Spring framework 작성자 : 김태완.
4부 클래스 라이브러리 “4부에서는 자바 언어의 API인 클래스 라이브러리에 관해 설명합니다
어서와 Java는 처음이지! 제1장 기초 사항 IT응용시스템공학과 김형진 교수.
2 서블릿의 기초.
3장. 웹 어플리케이션과 JSP 및 Servlet의 이해 제3장.
1. JSP(Java Server Pages) 소개
자바 서버 API와 서블릿 데이타베이스 실험실 이찬섭, 박용문.
10장. 에러 처리 제10장.
자바란 무엇인가? JDK의 다운로드 및 설치 방법 Hello, Java 프로그램의 작성 자바 프로그램의 작동 원리
5 익셉션 처리.
7. JavaBeans 프로그래밍 JavaBeans JavaBeans 만들기 Bean을 이용한 회원가입 양식 작성하기
1장. JSP 및 Servlet을 활용한 동적 웹 프로그래밍 소개 제1장.
1. JSP(Java Server Pages) 소개
메소드 호출과 힙 원격 메소드 호출 서블릿 엔터프라이즈 자바 빈즈
125. WAPPLES Policy Setting Guideline
Power Java 제4장 자바 프로그래밍 기초.
ASP 정 보 보 호 학 과 양 계 탁.
Chapter 02 웹의 이해.
REPORT DESIGNER5.0 FAQ.
AJAX 커머스아이 박준열.
AOP 개념 및 Spring의 AOP 기능.
Java IT응용시스템공학과 김형진 교수 2장. 자바의 환경 public class SumTest {
웹서버와 설치에 필요한 것 WWW ( world wide web ) TCP/IP 프로토콜을 이용하는 클라이언트/서버 환경
JSP와 자바 빈즈 JSP 빈즈 구조를 이해하고 활용한다. useBean 액션 활용법을 익힌다.
JSP 내장 객체 JSP에서 기본으로 사용할 수 있는 내장 객체 종류를 알아본다. 내장 객체별 주요 기능과 메서드를 이해한다.
9강. JSP 본격적으로 살펴보기-I JSP 태그의 개념 이해 JSP 동작 원리 JSP 내부 객체
8 데이터베이스 사용하기.
12 데이터베이스 사용하기.
Network Programming(1)
사용법 1. NLog 설치 2. Configuration, Rule, Target 3. 기본 API 사용법
JDBC (Java Database Connectivity)
8강. Servlet 본격적으로 살펴보기-IV
9장 JSP페이지의 에러처리 이장에서 배울 내용 : JSP페이지에서 에러를 처리하는 방법에 대해 학습해본다. 에러페이지를 사용한 에러처리의 문제점을 살펴보고, 현재 JSP2.0에서 권장하는 에러 처리 형태인 에러코드별 에러처리를 하는 방법에 대해 학습한다.
Network Security WireShark를 활용한 프로토콜 분석 II.
객체 지향 프로그래밍.
Web Socket.
컴퓨터응용과학부 Java Enterprize(DB) 제 7 주
자바의 신 Volume 1 1부(1~3장) 자바의 신 메인 홈 : 자바의 신 페이스북: 자바의 신 문제 풀이 :
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
3. Spring 프레임워크의 IoC 컨테이너 개념
JSP문법 JSP 기본 구조를 이해한다. 지시어, 스크립트릿 JSP 액션 태그 사용법을 익힌다. 한빛미디어(주)
김 정 석 Web Programming 김 정 석
[INA470] Java Programming Youn-Hee Han
myfood.com 상명대 맛집 홈페이지 구축 제안서
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
3장. 웹로직 서버에서의 서블릿과 JSP의 운용 3-1. 서블릿, JSP를 실행하기 전의 환경 설정
자바 5.0 프로그래밍.
Chapter 08 : 서블릿 고급3. chapter 08 : 서블릿 고급3 학습목표 서블릿 속성과 Scope ServletContext HttpSession HttpServletRequest Filter API 요청 필터 응답 필터 url-pattern 8 가지.
리스너와 서블릿 필터 초기화 파라미터 관리 개념을 이해한다 리스너 구조를 이해하고 프로그래밍 기법을 배운다
Internet Computing KUT Youn-Hee Han
Spring Security 2015 Web Service Computing.
Architecture.
Web Debug & Trace Bit 18th Choi Yong-Ho 1.
Java 5장. 객체지향 개념 public class SumTest {
웹 스크래핑.
1. 전문대학기초학습지원센터 접속하기 전문대학 기초학습지원센터 접속 접속URL : LOG-IN 클릭.
1. 전문대학기초학습지원센터 접속하기 전문대학 기초학습지원센터 접속 접속URL : LOG-IN 클릭.
1. 전문대학기초학습지원센터 접속하기 전문대학 기초학습지원센터 접속 접속URL : LOG-IN 클릭.
Chapter8 : 인터페이스와 패키지 8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용
Presentation transcript:

웹 애플리케이션 로깅 및 오류 처리 기법 웹 애플리케이션 로깅의 필요성을 이해한다 로깅의 분류 및 구현 방안을 학습한다 자카르타 commons 로깅 프레임워크의 활용 방안을 배운다 Log4J 기본 활용방안 및 설정법을 학습한다 종합 실습을 통한 웹 애플리케이션 로깅 설계를 이해한다 한빛미디어(주)

웹 애플리케이션 로깅 Section 01 개요 로깅의 필요성 로깅이란 ? 로깅(Logging)은 프로그램 개발이나 운영 시 발생하는 문제점을 추적하거나 운영상태를 모니터링하기 위한 텍스트 형식의 데이터를 남기는 것을 말함 로깅의 필요성 System.out.println() 메서드를 이용한 비 체계적 로깅의 대체 로깅의 분류 유형 설명 시스템 로깅 애플리케이션 내부 동작 과정에서 발생하는 내용에 대한 로깅 ∙ 네트워크 문제로 인한 DB 연결 실패 ∙ 데이터베이스 내부 처리에서 발생한 문제 ∙ 서버 시작/종료 관련 메시지 ∙ 기타 서버 프로그램 동작 중 발생한 문제 등 애플리케이션 로깅 사용자나 데이터와 관련된 내용에 대한 로깅 ∙ 사용자 로그인 히스토리 ∙ 웹의 경우 특정 페이지 요청 기록 ∙ 사용자 권한 관련 ∙ 특정 메서드 호출 및 파라미터 정보 ∙ 처리 데이터 확인용 메시지 등

웹 애플리케이션 로깅 Section 01 개요 로깅의 구현형태 형태 설명 프로그래머 임의 구현 프로그래머 임의로 로깅 정책을 수립 파일 I/O 기반의 로깅 클래스 구현 등을 통한 로깅 처리 비교적 손쉽게 구현할 수 있으나, 표준화가 되지 않았기 때문에 유지보수에 문제가 있음 서블릿 컨테이너 제공 웹 애플리케이션에서 대표적으로 이용할 수 있는 로깅의 구현 형태 톰캣과 같은 컨테이너에서 제공하는 API를 이용해 로깅을 하는 방식(톰캣로그파일 사용) 시스템 로깅의 처리에는 적합. 애플리케이션 로깅을 처리하기에는 다소 부적합 필터 혹은 리스너를 이용한 로깅 웹 애플리케이션의 특징을 사용한 로깅 구현 형태이다 필터의 특성상 적용 대상을 선택할 수 있으며 request, response 정보를 가로챌 수 있기 때문에 기존 애플리케이션을 수정하지 않고 추가적으로 필요한 로깅 수행가능(리스너도 유사) 자카르타 Commons 로깅 웹 뿐만 아니라 일반 애플리케이션까지 범용으로 이용할 수 있는 로깅 프레임워크 여러 로깅 API들을 단일화된 접근 방식으로 사용할 수 있도록 해줌 보통의 경우 내부적으로는 Log4j, JDK, Avalon 등의 로깅 API를 사용 애플리케이션에서는 commons-logging API를 통해 처리 Log4j를 이용한 로깅 Log4j는 현재 가장 대표적인 로깅 프레임워크로 비교적 쉬우며 다양한 기능을 제공 Log4j 단독으로도 사용될 수 있지만, commons-logging 패키지 사용을 권장 AOP를 이용한 로깅 AOP는 Aspect Oriented Programming의 약자로, 현재 운영 중인 애플리케이션의 코드를 수정하지 않고 기능을 수정하거나 추가할 수 있는 새로운 프로그래밍 기법임 기존 애플리케이션의 수정 없이 로깅 처리가 필요하다면 생각해볼 만한 방법임

웹 애플리케이션 로깅 Section 01 서블릿 컨테이너 제공 로깅 웹 애플리케이션에서 가장 기본이 되는 로깅 기법 주로 시스템 로깅을 처리하기 위해 사용함 컨테이너 마다 로그파일 위치나 파일명이 다름 톰캣 로그파일 디렉터리 메서드 설명 public void log(String msg) 시스템을 통해 문자열 형태의 내용을 출력한다. 톰캣의 경우 localhost.yyyy-MM-dd.log 파일에 기록. 이클립스의 경우 콘솔 메시지로만 출력된다. 로그 레벨은 INFO(정보)로 취급된다. public void log(String msg, Throwable throwable) Throwable 클래스는 모든 자바 오류와 예외의 슈퍼클래스. 메시지와 함께 특정 예외 처리 메시지를 함께 로깅할 수 있다. 로그 레벨은 SEVERE(심각)로 취급된다. 메서드 설명 톰캣 기본 디렉터리 톰캣 설치 디렉터리\logs 이클립스 + WTP workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\logs

웹 애플리케이션 로깅 Section 01 필터를 이용한 로깅 필터의 특성을 이용 필터를 이용한 로깅 구현 항목 특정 URL 요청에 선택적 적용이 가능 request, response 를 조작할 수 있음 웹 애플리케이션 전반에 걸쳐 서비스 차원에서의 로그를 관리 필터를 이용한 로깅 구현 항목 항목 설명 로그 파일 이름 보통 web.xml에 초기화 파라미터로 파일명을 등록한 후 참조한다. 로그 처리 init() 메서드 및 destroy() 메서드에서 처리한다. 자카르타 Commons 및 Log4j 등의 로깅 프레임워크를 이용한다. 필터 매핑 <filter-mapping> <filter-name> </filter-name> <servlet-name> </servlet-name> or <url-pattern> </url-pattern> </filter-mapping> 로깅 필터를 적용할 특정 서블릿 혹은 URL 기반의 매핑 정보를 설정한다.

웹 애플리케이션 로깅 Section 01 리스너를 이용한 로깅 리스너의 특성을 이용 리스너를 이용한 로깅 구현 항목 컨테이너의 특정 이벤트에 기반을 둔 로깅 구현에 적합 서블릿 스펙 이므로 모든 컨테이너 에서 호환 가능 시스템 로그와 애플리케이션 로그의 중간적 성격의 처리에 적합 리스너를 이용한 로깅 구현 항목 항목 설명 로그 파일 이름 보통 web.xml에 초기화 파라미터로 파일명을 등록한 후 참조한다. 로그 처리 자카르타 Commons 및 Log4j 등의 로깅 프레임워크를 이용하며 다음의 메서드에서 처리한다. <점스타일> ∙ contextInitialized() 및 contextDestroyed() 메서드 ∙ sessionCreated() 및 sessionDestroyed() 메서드</점스타일> 리스너 등록 리스너 등록 시 동일 이벤트에 대해 여러 리스너가 동작할 경우, 우선순위를 정해 순차적으로 실행될 수 있도록 주의한다.

웹 애플리케이션 로깅 Section 01 자카르타 Commons 로깅 개요 commons-logging 라이브러리 설치 개발자들에게 공통 로깅 API를 제공하기 위해 만들어진 프레임워크 서로다른 로깅 구현에 대한 사용을 표준화된 방법으로 가능하게 함 애플리케이션이 특정 로깅 API에 종속되는 것을 막아줌 대부분의 로깅 솔루션들은 commons-logging 을 지원 commons-logging 라이브러리 설치 로깅 구현체 설치 기본적으로 제공되는 로깅 구현체는 SimpleLog 클래스로 콘솔출력만 지원함 다양한 로깅설정 및 처리를 위해서는 Log4j 등 별도 설치 필요 항목 설명 기본 톰캣 톰캣 설치 디렉터리\common\lib 이클립스 + WTP WEB-INF\lib

웹 애플리케이션 로깅 Section 01 자카르타 Commons 로깅 로깅설정 로깅 구현체에 따라 다음과 같이 설정 필요 여러 로깅 구현체를 동시에 사용할 경우 정해진 순서에 따라 적용 순서 방법 1 프로퍼티 파일을 이용한 방법 ∙ 설정내용 기본: org.apache.commons.logging.Log = org.apache.commons.logging.impl.SimpleLog Log4j: org.apache.commons.logging.Log = org.apache.commons.logging.impl.Log4JLogger ∙ 클래스 경로 상에 위치한 commons-logging.properties 파일에 설정 2 시스템 프로퍼티를 이용한 방법 ∙ 속성 키: org.apache.commons.logging.Log ∙ 설정 내용은 프로퍼티 파일을 이용한 경우와 동일하다. ∙ 톰캣 시작 시 파라미터로 전달해야 한다. 3 Log4j 를 이용한 방법 ∙ 클래스 경로 상의 log4j.properties 파일에 설정 ∙ 1번 프로퍼티 파일 설정외의 Log4j 설정 필요(이 부분은Log4j에서 다시 설명한다) 4 기본 로깅 구현체 사용 ∙ SimpleLog 클래스 사용 ∙ 1번 설정만으로 사용

웹 애플리케이션 로깅 Section 01 자카르타 Commons 로깅 로깅API 사용하기 JSP, 빈즈 클래스, 서블릿 등에서 동일한 방법으로 사용 가능 패키지 import Log 클래스 참조 구하기 로그 수행(로그레벨에 따란 메서드 다름) import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; Log log = LogFactory.getLog(Class class); Log log = LogFactory.getLog(String name); log.fatal(Object message); log.fatal(Object message, Throwable t);

웹 애플리케이션 로깅 Section 01 자카르타 Commons 로깅 로그레벨 모든 로깅 구현체 에서도 동일하게 사용됨 로그 레벨 처리 메서드 FATAL 가장 심각한 오류를 말한다. 상태 콘솔에 즉시 출력한다. ERROR 일반적인 오류를 말한다. 상태 콘솔에 즉시 출력한다. WARN 오류는 아니지만 주의를 요하는 경우를 말한다. deprecated된 API 사용 등이 여기에 해당한다. 상태 콘솔에 즉시 출력한다. INFO 런타임 시의 관심 있는 이벤트를 말한다. 상태 콘솔에 즉시 출력한다. DEBUG 시스템 흐름과 관련된 상세 정보를 말한다. 로그 파일로만 출력한다. TRACE 가장 상세한 형태의 정보를 말한다. 로그 파일로만 출력한다.

웹 애플리케이션 로깅 Section 01 Log4j를 이용한 로깅 Log4j 개요 Log4j 환경설정 아파치 Logging Service 프로젝트로 통합된 대표적인 오픈소스 로깅 프레임워크 자바 이외에 다양한 언어를 지원하는 호환 버전이 존재 Log4j 설치 : 부록CD의 log4j.jar 파일을 WEB-INF/lib 폴더로 복사 Log4j 환경설정 기본톰캣 사용시 : WEB-INF\classes\log4j.properties 이클립스 사용시 : src\log4.properties 에 두면 자동으로 관리됨 키 값 내용 log4j.rootLogger 최상위 로그 설정으로, 다음과 같은 항목이 온다. ∙ 로그 레벨: FATAL, ERROR, WARN, INFO, DEBUG ∙ appender 이름: 해당 appender의 세부 설정을 위해 사용할 이름 log4j.appender.xxx rootLogger에서 설정한 appender 이름(xxx)에 대한 실제적인 클래스를 지정한다. appender는 파일, 콘솔, 이메일 등 다양한 로그 처리 매체 설정을 말함 ∙ 교재 [표 14-13] appender 클래스 종류 참조 log4j.appender.xxx.layout 해당 appender를 통해 출력되는 로그 메시지의 형태를 관리할 layout 클래스를 지정한다. ∙ 교재 [표 14-14] [표 14-15] layout 클래스 종류 및 형식 참조

웹 애플리케이션 로깅 Section 01 Log4j를 이용한 로깅 Log4j API 사용 자체 API 를 제공하지만 가급적이면 commons-logging API 사용을 권장 패키지 import Logger 클래스 인스턴스 생성 로그 처리 import org.apache.log4j.Log; static Logger logger = Logger.getLog(Class class) log.info(“로그메시지”);

웹 애플리케이션 로깅 교재 : 533 ~ 542 페이지 예제 개요 웹 애플리케이션에 대한 간단한 로깅정책 수립 Log4j를 이용해 콘솔, 파일을 이용해 다양한 포맷의 로깅 수행 필터 및 리스너를 이용해 특정 상황에 대한 로깅 설정

웹 애플리케이션 초기화 파라미터 Section 02 개요 초기화 파라미터 응용 분야 ServletConfig를 이용하는 경우 데이터베이스 접속 주소 혹은 JNDI 이름 등 변경이 가능한 값을 설정 함 변경될 수 있는 정보를 프로그램내 하드코딩 해둘 경우 발생하는 유지보수 문제해결 프레임워크 등 사용시 환경설정 파일의 위치나 이름 등 설정 ServletConfig를 이용하는 경우 서블릿 단위로 설정하기 때문에 해당 서블릿에서만 참조가 가능하다. 서블릿 코드 내에서 사용법 ServletContext를 이용하는 경우 웹 애플리케이션 단위로 설정하기 때문에 모든 JSP 나 서블릿에서 참조 가능 getServletConfig().getInitParameter("param-name에서의 설정 이름") getServletContext().getInitParameter("param-name에서의 설정 이름")

웹 애플리케이션 오류 처리 기법 Section 02 개요 로깅과 오류처리의 차이 컨테이너 오류 처리 설정 로깅은 운영 중인 애플리케이션의 현황의 모니터링 및 문제발생시 참고자료 오류처리는 발생한 오류를 어떻게 적절히 처리할 수 있는가의 문제 컨테이너 오류 처리 설정 대표적인 웹 애플리케이션 오류처리 코드(서버 기준) 오류코드 내용 100 Continue 200 OK, 오류 없이 전송 성공 201 Created, POST 명령 실행 및 성공 400 Bad request, 클라이언트의 잘못된 요청으로 처리할 수 없음 403 Forbidden, 접근이 거부된 문서를 요청함 404 Not found, 문서를 찾을 수 없음 405 Method not allowed, 리소스를 허용하지 않음 406 Not acceptable, 허용할 수 없음 500 Internal server error, 내부 서버 오류(잘못된 스크립트 실행 시) 501 Not implemented, 클라이언트에서 서버가 수행할 수 없는 행동을 요구함 502 Bad gateway, 서버의 과부하 상태 503 Service unavailable, 외부 서비스가 죽었거나 현재 멈춘 상태 505 HTTP version not supported

웹 애플리케이션 오류 처리 기법 Section 02 개요 컨테이너 오류 처리 설정 서버에서 오류 발생시 자체 오류 메시지 출력 -> 보기에 좋지 않음, 사이트 신뢰 저하 각각의 오류에 대해 별도 처리 페이지 지정 가능 web.xml 설정 오류 유형 사용 예 프로그램 오류 <error-page> <exception-type>java.lang.Throwable</exception-type> <location>/error/error.jsp</location> </error-page> 서버 오류 <error-code>500</error-code> <location>/error/500-error.jsp</location>

웹 애플리케이션 오류 처리 기법 Section 02 JSP 오류 처리 JSP 에서 발생하는 오류에 대한 처리 방법 JSP 페이지 지시어의 errorPage, isErrorPage 속성을 이용함 -> 교재 145페이지 JSP 2.0 이상에서 부터 ErraData 클래스를 통해 보다 세부적인 에러정보 제공 pageContext 내장객체의 속성 형태로 제공됨 errorData 사용 예 속성 데이터 유형 설명 requestURI String 요청이 실패한 URI servletName 실패한 JSP나 서블릿 이름 statusCode int 실패 상태 코드 throwable Throwable 오류 페이지를 불러들인 예외 요청 실패 URI: ${pageContext.errorData.requestURI} 상태 코드: ${pageContext.errorData.statusCode} 예외 유형: ${pageContext.errorData.throwable}

웹 애플리케이션 오류 처리 교재 : 545 ~ 551 페이지 예제 개요 web.xml 설정을 통해 서버 오류를 개별 파일로 처리하도록 함 고급 JSP 오류 처리 실습