http://jakarta.apache.org

Ex-Jakarta  logging

http://logging.apache.org/log4j/1.2/apidocs/index.html doc 문서

 

 

 

ant를 환경변수 잡고 . 실행

 

logging이 압축이 풀린곳으로 이동하여 ant를 실행

ant jar 해주면 logging 다운폴더에 dist가 생긴다 .. 거기에 lib폴더 안에 log4j-1.2.15 파일을 web-inf밑에 lib폴더에 삽입

 

Logger : 실제로 로그를 기록하는 객체1

 

Appender : 로그를 출력하는 대상 . (콘솔 || 파일에 출력가능)

 

Layout : 로그 포멧

 

하나의 Logger에는 n개의 Appendar이 붙는다.

 

메쏘드 (method)

 

1 레벨 debug()

 

2 레벨 info()

 

3 레벨 error()

 

4 레벨 warn()

 

5 레벨 fatal()

 

사용법 ..

 

package com.ex;

import java.io.IOException;

import org.apache.log4j.*;
import org.apache.log4j.helpers.DateLayout;

 

public class LogEx1 {

 
 public static void main(String[] args) throws IOException {
  
  
  Logger logger  = Logger.getLogger(LogEx1.class);//
  //Logger logger  = Logger.getLogger("EX"); 
  
  // 로그에 레벨 지정하기
  //logger.setLevel(Level.ERROR);
  
  
  //시간을 이용해서 Layout를 쓸때 사용 time, thread,
  /*DateLayout layout = //new SimpleLayout();
    new TTCCLayout();
  */
  // 심플하게 그냥 찍을 때 사용
  //Layout layout = new SimpleLayout();
  
  // patternLayout를 사용하여 .. 데이타를 포멧 해서 찍기  현재 시간[%d], 현재 실행되는 쓰레드 [%t] , 현재 실행되는 메소드%M 출력하려는 메시지 %m
  Layout layout = new PatternLayout("%d{HH:mm:ss} [%t] %M %m \n");
  
   
  
  //appender 에 레이아웃을  지정
  Appender app1 = new ConsoleAppender(layout);
  logger.addAppender(app1); //logger에 appender을 붙인다.
  
  //logger 하나에 여러개의 appener을 붙일수 있다 . 
  
  
  
  RollingFileAppender app2 = new RollingFileAppender(layout,"c:\\zzz\\logex1.txt");
  app2.setMaxFileSize("2KB"); // 2kb짜리를 하나 만들고 안만든다 .. 파일에 내용을 덮어쓴다.
  app2.setMaxBackupIndex(100); // setMaxFileSize의 파일 갯수를 지정 한다. 그래야  용량이 넘어가도 파일을 계속 만들어서 파일에 담는다.
  logger.addAppender(app2);
  for(int i = 0 ; i <100; i ++){
   
   logger.debug("debug : "+i);
   logger.info("info : "+i);
   logger.error("error : "+i);
   logger.warn("warn : "+i);
   logger.fatal("fatal : "+i);
  }
 }

}

 

 

 

 

 

 

 

/*모든 log4j의 프로퍼티 이름은 */

log4j.properties 통일 ..

 

#root logger
log4j.rootLogger = ALL, stdout1,stdout2  최상위 로거 찍는 것

#logger level ALL( 모든 에러 메시지를 찍는다 . 에러 레벨을 지정하면 에러 메시지가 뜬다 .
log4j.logger.com.ex = ERROR
log4j.logger.org.apache.jsp = FATAL

#console appender
log4j.appender.stdout1 = org.apache.log4j.ConsoleAppender
log4j.appender.stdout1.layout = org.apache.log4j.SimpleLayout

#file appender
log4j.appender.stdout2 = org.apache.log4j.FileAppender  //
log4j.appender.stdout2.file = c:\\zzz\\test.log // 파일 경로
log4j.appender.stdout2.layout = org.apache.log4j.PatternLayout // 레이아웃 결정
log4j.appender.stdout2.layout.ConversionPattern = %d{HH:mm:ss} %t %M %m \n  // 레이아웃 포멧 결정

 

PatternLayout("%d{HH:mm:ss} %t %C %M %m \n"

 

PatternLayout 는 실행되고 있는 클래스와 .. 메소드를 볼수 있다 .

 

메니저에 직접 사용시

import org.apache.log4j.*;

public class MemberManager {
 private static Logger logger = Logger.getLogger(MemberManager.class);
 
 public void add(){
  logger.debug("AAAAAAAA");
 }
 
}

_____________________________________________________________________________________________________________________

클래스 상속하여 사용 ..

import org.apache.log4j.Logger;

public class DefaultManager {
 
 public  Logger logger = null;
 
 public DefaultManager(){
  logger = logger.getLogger(this.getClass());
  
 }
 
}

import org.apache.log4j.*;

public class MemberManager extends DefaultManager {
 public MemberManager(){
  super();
 }
 
 public void add(){
  logger.debug("AAAAAAAA");
 }
 
}
_______________________________________________________________________________________________________________________

 

 

 

 

 

 

 

 

M V C(Model View Control)

   데이터

 

화면        로직
Model1
------
Client ->  jsp -> java -> DAO ->  DB


Model2
------
Client -> 로직을담당 ->  java ->  DAO -> DB
             |
jsp에 결과를 전송  <- 

 

1) setAttribute()
 ->

2) RequestDispatcher
  -> request 1번으로 여러개의 page에서 request를 쓸수 있다.


page-> request-> session-> application 크기 순서 ..
  controllor(servlet로 만든다.)
-----------------> 로직 ------------>처리
  request----->
       setAttribute
      처리할 결과값을 찍고
   jsp getAttribute해서 결과값을 뿌린다.

jsp는 화면에 출력을 위해서만 사용

 

________________________________________________________________________________________________________________________

모델2 는 모든 데이터가 controller가 처리

 

                                                                WORKER----------------------

                                                                   |                                        |

controller  --------> input.jsp ---Controller--|-|----->Command                   |->Manager - ---- > DAO --> DB

                                                                |

                                                            HELPER

 

\WEB-INF\\jsp\\view.jsp
_________________________________________________________________________
<%@ page import ="com.ex.*" %>
<%
 request.setCharacterEncoding("EUC-KR");
 Object obj  = request.getAttribute("RESULT");
 MemberVO vo = (MemberVO)obj;
 
%>   

회원정보보기 페이지 <%=obj %>
아이디 <%=vo.getName() %>
___________________________________________________________________________

<jsp:useBean id = "RESULT" class = "com.ex.MemberVO" scope = "request">
</jsp:useBean>

회원정보보기 페이지 <%=RESULT %>
아이디 <jsp:getProperty name = "RESULT" property = "name"/>
___________________________________________________________________________

회원정보보기 페이지 ${RESULT }<br>
이름 : ${RESULT.name} <br>
주소 : ${RESULT.addr} <br>

___________________________________________________________________________

 

 

 

 

 

 

 

 

 

 

 


 

 /*HttpSession sess = request.getSession();
   ServletContext ctx = sess.getServletContext();
   String path = ctx.getRealPath("/bbs/attach");*/ 

 

게시판 파일 업로드는 컨텍스안에 폴더를 만들어서 그 경로에 저장.

 

 

  String path = request.getSession().getServletContext().getRealPath("bbs/attach");

+ Recent posts