레이블이 java log4j인 게시물을 표시합니다. 모든 게시물 표시
레이블이 java log4j인 게시물을 표시합니다. 모든 게시물 표시

2013년 9월 9일 월요일

스프링3.2파일다운,스프링교육강좌,스프링에서 파일 다운로드 구현하기

스프링3.2파일다운,스프링교육강좌,스프링에서 파일 다운로드 구현하기

파일 다운로드를 구현하는경우, 컨트롤러 클래스에서 다운로드 받을 파일과 관련된 정보를 뷰 페이지에 전달해야된다.


public class SpringBoardDownController implements Controller {

 private BoardDownDao boardDownDao;
 protected final Log logger = LogFactory.getLog(getClass());
 
 public BoardDownDao getBoardDownDao() {
  return boardDownDao;
 }

 public void setBoardDownDao(BoardDownDao boardDownDao) {
  this.boardDownDao = boardDownDao;
 }
 
 @Override
 public ModelAndView handleRequest(HttpServletRequest request,
  HttpServletResponse response) throws Exception {
 
  File downLoadFile = getFile(request); //파일객체를 생성한다.

 
  return new ModelAndView("download","downloadFile",downLoadFile);

  //뷰페이지를 호출하며, 생성된 파일객체를 담는다.
 
 }
 public File getFile(HttpServletRequest request){ //다운로드 폴더에서 파일객체를생성한다.
  String path = "c:\\upload";
  String filename = request.getParameter("filename");
 
  logger.info("file...."+path+filename);
  return new File(path, filename);
 }
 

}


 

파일 다운로드를 위한 뷰는 jsp페이지가 아니므로 커스텀 뷰 클래스를 구현해야됨

 

package board;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.util.FileCopyUtils;
import org.springframework.web.servlet.view.AbstractView;

public class DownloadView extends  AbstractView{
 
 public DownloadView(){
 
  this.setContentType("application/octet-stream");
 
 }

 @Override
 protected void renderMergedOutputModel(Map model, HttpServletRequest request,
  HttpServletResponse response) throws Exception {
  File file = (File)model.get("downloadFile");
  response.setContentType(this.getContentType());
  response.setContentLength((int)file.length());
  response.setHeader("Content-Disposition", "attachment; fileName=""+file.getName()+"";");
  response.setHeader("Content-Transfer-Encoding", "binary");
  OutputStream out = response.getOutputStream();
  FileInputStream fis = null;
 
  try{
  fis=new FileInputStream(file);
  FileCopyUtils.copy(fis, out);
  }
  finally{
  if(fis!=null) {
    try{
    fis.close();
    }
    catch(IOException ex){
   
    }
  }
  }
  out.flush();
 }

}


 

 

<bean id="download"
  class="board.DownloadView" /> //다운로드뷰 클래스를 지정하고 id값은 컨트롤러 클래스에서 리턴하고있는 ModelAndView()페이지이름과 동일하게 준다.
 
 <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" >
  <property name="order" value="1"> </property>
 
 </bean>
 

//스프링에서 ViewResolver는 하나이상줄수있다.


 <bean id="viewResolver"
  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass">
  <value>org.springframework.web.servlet.view.JstlView</value>
  </property>
 
  <property name="prefix">
  <value>/WEB-INF/jsp/</value> 
  </property>
 
  <property name="suffix">
  <value>.jsp</value>
  </property>
 </bean>


오라클자바커뮤니티 추천 실무 강좌 - 개인80% 환급

Spring3.X, MyBatis, Hibernate실무과정

강좌명 Spring3.X, MyBatis, Hibernate실무과정(평일야간)
오라클자바커뮤니티(www.oraclejavanew.kr) 추천 실전강좌
교재 자체교재 or PDF 파일 제공
강좌 일정 09월12일(목) ~ 10월04일(금)((평일야간) 19:00~22:00, 12일) 총 36시간
강의 장소 [C강의장]구로디지털단지역2번 출구-> 미니스톱끼고 우회전 -> 100m 직진 후 골목길 끝에서 이마트방향 우회전 -> 50m 직진 후 우체국 옆골목으로 길건너서 직진 -> 150미터 직진 후 JnK 타워에서 우회전 -> 50미터 직진 후 우측에 코오롱빌란트2차 803호 (구로구 구로3동 222-8 코오롱디지털타워 빌란트2차 803호)
[약도보기]
수강절차 - 강좌내용 확인
- 전화 또는 홈페이지(www.onjprogramming.co.kr)를 통한 수강지원 및 수강료 결제(무통장입금, 온라인 카드결제)
- 고용보험 가입자(재직자)인 경우 고용보험환급 관련 서류 제출
- 수강전 : 커리큘럼 및 장소에 대해 다시 한번 공지
- 교육 전 설문 작성(간단한 개발 경력, 수강 목적, 강좌진행방식 등)
- 강좌 수강
- 수강후 : 교육 후 설문 작성
수강료 - 590,000원
[고용주환급]대기업:14만원 전후, 중소기업:187,047 원환급

[개인수강지원(개인환급)]정규직 472,000 ,비정규직:전액환급
대기업(상시근로자 300인 이상 대기업)은 개인환급 불가합니다.

재직자 내일배움카드 : 정부지원금 80% 자기부담금 20%
(구 능력개발카드 명칭이 내일배움카드로 변경 / 연간 총한도 200만원)


* 휴강 :법정공휴일
수강료
입금안내
- 온/오프라인 카드결제, 계좌이체(수강안내->입금안내 참조)
문의사항 02-851-4790 번으로 연락 부탁 드립니다.
교육개요 본과정은 자바 웹개발에서 가장 많이 사용되고 있는 자바기반 프레임워크인 Spring3.2를 학습하는데 스프링이 왜 도입되어야 하는지부터, 기본모듈구성, 아키텍처 DI, DL, IoC, 최근 개발모델의 핵심인 Spring AOP, AspectJ Annotation, 표현언어인 SpEL, Spring MVC, Spring MVC TEST Framework, Spring WebFlow, Spring JDBC, Spring Transaction등 개발에 필요한 부분을 체계적으로 실습을 통해 학습하며 SQLMapper인 MyBatis, Hibernate 까지 학습하는 Spring 최고의 교육 입니다.

[특징]
- 실무/실습에 근거한 이론 취득
- 단기간에 스프링 개발자로 양성
- 문답씩 수업으로 수강 효과 극대화
- 이론/실습 과제로 인한 개발력 UP
교육목표 - Spring의 도입배경 및 아키텍처에 대해 이해한다.
(자바빈의 태동부터 EJB, 그리고 현재까지)
- Eclipse, Maven, STS 플러그인에 대한 이해
(개발환경 설정의 이해)
- Spring IoC(DI, DL)의 이해
(실습을 통한 setter,getter,constructor injection의 이해)
- Spring AOP의 이해
(실습을 통한 Spring AOP의 이해, AOP어렵지 않습니다)
- AspectJ Annotation에 대한 이해
(Spring의 AspectJ 지원 및 Annotation 대한 이해 by 실습)
- Spring Web MVC, JDBC의 이해
(실습을 통한 Spring MVC, JDBC의 이해)
- Spring Controller에 대한 이해
(간단한 Controller의 구현을 통한 MVC Font Contrller의 이해)
- Spring Web Flow에 대한 이해
(실습을 통한 Spring Web Flow 및 JSF에 대한 이해)
- SpEL에 대한 이해
(실습을 통한 Spring SpEL의 이해)
- Servlet3 비동기 요청에 대해 이해한다.
(실습을 통한 비동기 서블릿에 대한 이해)
- MyBatis Mapper에 대해 이해한다.
(실습을 통한 MyBatis 구성, 작동원리 이해)
- Hibernate Mapper에 대해 이해한다.
(실습을 통한 Hibernate 구성, 작동원리 이해)
- 실무 개발 환경에 적응력 UP
(Spring, MyBATIS 기반 게시판 작성)
교육대상 - JAVA, JSP 개발자
- 자바개발은 오래 했지만 프레임워크에 대해 자신이 없는 개발자
- 단기간에 스프링을 박살 내고 싶은 개발자.
(스프링 혼자 공부하기는 어렵습니다!!)
선수학습 - JAVA, JSP
 

Spring3.2 J2EE Framework에 대한 흐름과 Spring Framework에 대한 이해
개발 환경 설정(Eclipse4.3 KEPLER, Tomcat7, Spring3.2 다운로드 및 설치)
Maven, STS 플러그인 설치
Spring IoC
DL(Dependency LookUp) &DI(Dependency Injection)
Dependency Pull, CDL(Contaxtualized Lookup)
Setter/Constructor/Mathod Injection
Spring 설정
Spring AOP 란 ?Code, Advice, JoinPoint, PointCut, Aspect, WeavingProxyFactoryBean
Annotation기반 AOP(AspectJ)
기타 Spring의 선언적 AOP 선언
Spring JDBC
Spring MVC
Spring Controller
Spring Webflow, JSF
Spring 표현언어 SpEL
Servlet3 비동기 요청처리
Spring3.2 Transaction 관리
Spring MVC TEST Framework
MyBatis/hibernate [MyBatis]
개요 및 소개
개발환경 설정 및 설치
Data Mapper란
sqlMapConfig 이해 및 환경설정
Spring, MyBatis 연동
SQL Map XML File 이해
SqlMapClient 이해
SQL의 실행(Insert/update/delete) 이해와 실습
고급 쿼리 사용방법의 이해와 실습
Spring MyBatis 응용예제 작성

[Hibernate]
Hibernate 소개
SessionFactory 설정
1:1, 1:다 매핑
Session Interface
Hibernate DML
Spring, Hibernate 예제 프로그램 작성
 

2013년 8월 8일 목요일

[오라클자바커뮤니티자바교육]스트럿츠 간단 예제

Struts의 간단한 예제


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)  

이번 예제는 간단한 구조를 가지는 프로그램이지만 스트럿츠의 흐름을 이해할 수 있는 예제 입니다.

add.jsp에서 사용자가 두수를 입력한 후 submit 버튼을 누르면 ActionServlet이 호출된 후 AddAction을 호출하여 비즈니스 로직(두수를 더함)을 처리 합니다. 그런 다음 처리 결과를 result.jsp로 포워드 시키는 예제 입니다. 이때 사용자가 입력되는 두수를 저장하기 위해 AddForm이라는 폼빈을 사용했습니다.

이 예제를 실행하기 위해서는 http://struts.apache.org 에 가서 struts 최신 버전인 1.2.4 또는 1.2.6을 다운받습니다. 압축 받은 파일을 풀면 lib 폴더에 jar 파일과 tld 파일이 있는데 jar 파일은 context의 WEB-INF/lib에 위치시키고, tld 파일은 /WEB-INF에 저장 합니다. (전 이클립스를 사용했으며 struts-test라는 Tomcat 프로젝트를 만들었습니다)

Result.jsp에서는 JSTL을 사용했는데 Struts에서 JSTL을 사용하기 위해 http://www.apache.org/dist/jakarta/taglibs/standard/ 에서 jakarta-taglibs-standard-current.zip 파일을 다은 받은 후 jar 파일을 /WEB-INF/lib 폴더에 복사 합니다.


이클립스와 톰캣 플러그인에 대해서는 이전 강좌를 참고하시기 바랍니다.

--------------------
web.xml
--------------------
version="1.0" encoding="ISO-8859-1"?>
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

Welcome to Tomcat

Welcome to Tomcat



/WEB-INF/struts-bean.tld
/WEB-INF/struts-bean.tld


/WEB-INF/struts-html.tld
/WEB-INF/struts-html.tld


/WEB-INF/struts-logic.tld
/WEB-INF/struts-logic.tld




action
org.apache.struts.action.ActionServlet

config
/WEB-INF/struts-config.xml

1





action
*.do





--------------------
Struts-config.xml
--------------------

version="1.0" encoding="UTF-8"?>


















path="/FirstAction"
type="add.action.AddAction"
name="addForm"
validate="false"
>







-----------------------------------------------
add.jsp (struts-test 컨텍스트의 루트에 저장)
-----------------------------------------------

최초 실행 시 add.jsp를 localhost/struts-test/add.jsp 라고 호출 합니다.

<%@ page language="java" contentType="text/html;charset=euc-kr" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
:namespace prefix = html />
+=




-----------------------
result.jsp
-----------------------

결과가 포워드 되는 페이지 입니다.

<%@ page language="java" contentType="text/html;charset=euc-kr" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
합은 : :namespace prefix = c />

------------------------
AddAction.java
------------------------

사용자가 submit 버튼을 눌렀을 때 호출되는 action 클래스 입니다.

WEB-INF/src/add/action폴더에 작성 합니다.

package add.action;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.*;
import add.model.AddForm;
import add.model.AddResultVO;

public class AddAction extends Action {
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest req,
HttpServletResponse res) {
int op1 = ((AddForm)form).getOp1();
int op2 = ((AddForm)form).getOp2();

int result = op1 + op2;

AddResultVO vo = new AddResultVO();
vo.setResult(result);

req.setAttribute("resultvo", vo);

//System.out.println(vo.getResult());

return (mapping.findForward("success"));

}
}



-----------------
AddForm.java
-----------------

사용자의 Input Form과 형태를 같이 하며 ActionServlet을 통해 사용자의 입력 값들이 자동으로 저장되는 AddForm 입니다.

WEB-INF/src/add/model에서 작성 합니다.

package add.model;
import org.apache.struts.action.ActionForm;;

public class AddForm extends ActionForm {
protected int op1;
protected int op2;

public int getOp1() {
return op1;
}

public int getOp2() {
return op2;
}

public void setOp1(int op1) {
this.op1 = op1;
}

public void setOp2(int op2) {
this.op2 = op2;
}
}


---------------------
AddResultVO.java
---------------------

결과값을 저장하여 request에 AddResultVO를 저장하여 result.jsp가 나중에 이 값을 이용하여 화면에 출력을 합니다.

WEB-INF/src/add/model에서 작성 합니다.

package add.model;

public class AddResultVO {
private int result;


public int getResult() {
return result;
}

public void setResult(int result) {
this.result = result;
}
}

[오라클강좌,자바오라클]Log4J Jakarta의 오픈 소스 프로젝트

LOG4j 강좌 입니다.


Log4J 역시 Jakarta의 오픈 소스 프로젝트 입니다. 자바클래스 및 인터페이스로 이루어져 있는데 다양한 출력을 목적으로 만들어 졌습니다. C, C++, .NET등 에서도 변형해서 이용하고 있습니다.


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)  





Log4J의 특징 중 로거(logger)라는 개념이 있는데 각 logger들은 부모/자식의 계층 개념을 지원합니다.

예를 들면 com.oraclejava.strus 패키지의 모든 클래스를 위한 logger를 설정하고 com.oraclejava.struts.action 패키지의 모든 클래스에 대해 또 다른 logger를 설정 했다고 하면 앞의 logger가 상위 개념 즉 부모가 되는 것입니다. 이러한 계층 구조는 패키지 구조와 같은 기반에서 어떠한 로그 메시지를 전달할지 컨트롤하는데 유연성을 제공 합니다.

스트럿츠에서 Log4J를 사용하기 위해서는 WEB-INF/lib 아래에 Log4J의 JAR 파일을 설치 합니다. (http://logging.apache.org/site/binindex.html 에서 logging-log4j-1.2.9.zip 파일을다운 받습니다)

---------------------
로거(Logger)란
---------------------

Org.apache.log4j.Logger는 log4j에서 핵심 클래스 입니다. 대부분의 기능이 이 클래스에 의해 수행되며 만약 log4j를 struts와 함께 사용 한다면 log4j의 클래스와 인터페이스는 Commons 로깅 API에 은닉 됩니다.


---------------------
Log4j의 Appender
---------------------

Log4j를 사용하면 다양한 목적지에 로그 메시지를 전송 할 수 있습니다. Log4j 메시지의 목적지는 Appender로 간주하며 다음과 같은 Appender들이 있습니다.

• Console Appender
• File Appender
• Socket Appender
• Java Message Service (JMS) Appender
• NT Event Logger Appender
• Unix Syslog Appender
• Null Appender
• SMTP Appender
• Telnet Appender
• Asynchronous Appender

Log4j 프레임웍에서는 로깅 환경을 위해 Appender를 하나 이상 지원하며 다양한 조건에 기반한 메시지를 전송 할 수 있습니다.


-------------------------------
Log4j의 로그 레벨
-------------------------------

Log4j 메시지는 아래 5개의 레벨 중 하나에 해당 합니다.

• DEBUG
• INFO
• WARN
• ERROR
• FATAL

레벨을 debug로 사용 했다면 이전 버전의 ALL과 같은 의미이고 이전 버전에서의 OFF는 실제 의미가 없습니다. Appender를 사용하지 않게 설정하면 로그가 남지 않을 것 입니다.




------------------------------------------------------------
Log4j의 초기화(log4j.properties 파일을 이용한 초기화)
------------------------------------------------------------
초기화를 위한 첫번째 방법은 필요한 로깅 요소를 포함하는 log4j.properties 파일을 만들어 이를 통해 초기화 하는 것입니다. 아래 예는 INFO 레벨로 oef.apache.log4j.ConsoleAppender를 사용하여 콘솔에 메시지를 출력하는 설정 파일 입니다.
[Log4j.properties]

# A basic log4j configuration file that creates a single
console appender
# Create a single console appender that logs INFO and higher
log4j.rootLogger=INFO, stdout
# Configure the stdout appender to go to the console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# Configure the stdout appender to use the PatternLayout
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's filename and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

이 설정은 하나의 Appender 즉 System.out으로만 메시지를 출력하는 ConsoleAppender를 사용 합니다.

log4j.properties 파일은 WEB-INF/classes 폴더에 설치해야 하며 다중 애플리케이션 환경일 경우 각 애플리케이션 별로 log4j.properties를 설치 할 수 있습니다.

아래의 log4j.properties 파일은 메시지의 레벨과 다른 파라미터들을 기반으로 하여 여러 Appender에 로그 메시지를 기록하도록 설정 하는 예 입니다. 콘솔에도 출력하고 out.log 파일에도 메시지를 출력 합니다.

[Log4j.properties]

# A sample log4j configuration file
# Create two appenders, one called stdout and the other called rolling
log4j.rootLogger=DEBUG, stdout, rolling

# Configure the stdout appender to go to the console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender

# Configure the stdout appender to use the PatternLayout
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's filename and line number
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L)- %m%n

# Configure the rolling appender to be a RollingFileAppender
log4j.appender.rolling=org.apache.log4j.RollingFileAppender

# Configure the name of the logout for the rolling appender
log4j.appender.rolling.File=output.log

# Set up the maximum size of the rolling log file
log4j.appender.rolling.MaxFileSize=100KB

# Keep one backup file of the rolling appender
log4j.appender.rolling.MaxBackupIndex=1

# Configure the layout pattern and conversion pattern for the rolling appender
log4j.appender.rolling.layout=org.apache.log4j.PatternLayout
log4j.appender.rolling.layout.ConversionPattern=%d{ABSOLUTE} - %p %c - %m%n


------------------------------------------------------------
Log4j의 초기화(XML 파일을 이용한 초기화)
------------------------------------------------------------

Log4j.properties 처럼 XML 파일 역시 WEB-INF/classes 폴더에 위치하면 됩니다. 그리고 파일이름은 반드시 log4j.configuration 시스템 프로퍼티에 지정하여 어떤 파일을 로딩 할것인지를 알게 해야 합니다.

Log4j.configuration 파일에서 프로퍼티를 설정 하는 방법은 다음과 같습니다.

set CATALINA_OPTS=-Dlog4j.configuration=log4j.xml

또는 자바 명령행에서 지정하는 것도 가능 합니다.

java -Dlog4j.configuration=log4j.xml


[log4j.xml]
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration
xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="stdout"
class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%5p [%t] (%F:%L)- %m%n"/>
</layout>
</appender>
<root>
<priority value ="INFO" />
<appender-ref ref="stdout" />
</root>
</log4j:configuration>


참고로 log4j.xml 파일의 위치를 /WEB-INF/class 에서 상대적으로 지정하지 않고 파일 시스템의 절대 경로를 사용 하기 위해서는 다음과 같이 합니다.

java -Dlog4j.configuration=file:/c:/dev/env/log4j.xml

--------------------------
JSP에서 log4j 이용 하기
--------------------------

JSP 파일 내에서 처리 방법

1. Import the Commons Log and LogFactory classes.
2. Define and initialize a logger variable for the page.
3. Start logging.


[작업 순서]
1.        log4j용 jar 파일 확인(http://logging.apache.org/site/binindex.html 에서 다운받은 압축 파일을 풀면 dist/lib에 log4j-1.2.9.jar 파일이 있는데 이 파일을 /WEB-INF/lib에 복사)
2.        /WEB-INF/classes 에 commons-logging.properties 파일 생성

org.apache.commons.logging.Log = org.apache.commons.logging.impl.Log4JLogger

3.        /WEB-INF/classes 에 log4j.properties 파일 생성

# A sample log4j configuration file
# Create two appenders, one called stdout and the other called rolling
log4j.rootLogger=DEBUG, stdout, rolling

# Configure the stdout appender to go to the console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender

# Configure the stdout appender to use the PatternLayout
# atternLayout은 많은 양의 정보를 기록 하지만 SimpleLayout을 이용하면 적은양이 기록됩니다.
# log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout

# Pattern to output the caller's filename and line number
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L)- %m%n

# rolling appender에 RollingFileAppender를 설정
log4j.appender.rolling=org.apache.log4j.RollingFileAppender

# rolling appender를 위한 파일 이름 설정, 이클립스를 사용한다면 기본적으로  eclise 폴더에 만들어 짐
# log4j.appender.rolling.File=output.log
log4j.appender.rolling.File=d:\output.log

# Set up the maximum size of the rolling log file
log4j.appender.rolling.MaxFileSize=100KB

# Keep one backup file of the rolling appender, output.log.1 이라는 파일이 더 만들어 짐
log4j.appender.rolling.MaxBackupIndex=1

# Configure the layout pattern and conversion pattern for the rolling appender
log4j.appender.rolling.layout=org.apache.log4j.PatternLayout
log4j.appender.rolling.layout.ConversionPattern=%d{ABSOLUTE} - %p %c - %m%n

4.        log4j.jsp 작성

<%@ page import="org.apache.commons.logging.Log" %>
<%@ page import="org.apache.commons.logging.LogFactory" %>
<%-- Get a reference to the logger for this class --%>
<% Log logger = LogFactory.getLog( this.getClass( ) ); %>
<% logger.debug( "This is a debug message from a jsp" ); %>
<html>
<head>
<title>Using Commons Logging in a JSP page</title>
</head>
<body>
<% logger.info( "This is another log message in the jsp" );
%>
There should be two log messages in the log file.
</body>
</html>

5.        실행 후 로그


----------------------------------
태그 라이브러리를 이용한 로깅
----------------------------------

http://jakarta.apache.org/taglibs/doc/log-doc/intro.html,또는http://cvs.apache.org/builds/jakarta-taglibs/nightly/projects/log/ 에 가면 log4j 관련 태그라이브러리를 다운 받을 수 있습니다.

jakarta-taglibs-log-20050120.zip 파일을 다운 받아 압축을 풀면 taglibs-log.jar, taglibs-log.zip 파일이 있는데 jar 파일은 /WEB-INF/lib에 tld 파일은 /WEB-INF/ 폴더에 위치 시킵니다.


<%@ taglib uri="/WEB-INF/taglibs-log.tld" prefix="logger" %>
<logger:debug message="This is a debug message from a jsp using the Log tag" />
<html>
<head>
<title>Using the Log Tag in a JSP page</title>
</head>
<body>
<logger:info message="This is another message using the log4j tag" />
There should be two log messages in the log4j log file.
</body>
</html>

[결과]
11:25:28,421 - DEBUG org.apache.jasper.servlet.JspServlet - JspEngine --> /log4j2.jsp
11:25:28,421 - DEBUG org.apache.jasper.servlet.JspServlet -              ServletPath: /log4j2.jsp
11:25:28,421 - DEBUG org.apache.jasper.servlet.JspServlet -                PathInfo: null
11:25:28,421 - DEBUG org.apache.jasper.servlet.JspServlet -                RealPath: D:\Tomcat-Project\Login\log4j2.jsp
11:25:28,421 - DEBUG org.apache.jasper.servlet.JspServlet -              RequestURI: /Login/log4j2.jsp
11:25:28,421 - DEBUG org.apache.jasper.servlet.JspServlet -              QueryString: null
11:25:28,421 - DEBUG org.apache.jasper.servlet.JspServlet -          Request Params: 
11:25:28,491 - DEBUG  - This is a debug message from a jsp using the Log tag
11:25:28,501 - INFO  - This is another message using the log4j tag


로깅에 영향을 미치는 요소는 어떤 정보를 어떤 형식으로 기록 할 것인가? 입니다. Log4j에서는 출력 형식을 지정하기 위해 org.apache.log4j.Layout을 사용 합니다. SimpleLayout이 적은 비용이 들며 PatternLayout은 많은 비용이 들 수 있습니다.