프로그램/log

log4j 정리했던것

이승구 2012. 3. 5. 23:03
반응형
LOG4J 사용

다운로드 : http://logging.apache.org/site/binindex.cgi


 - 프로그래머가 System.out.println으로 로그를 만드는 불편함을 없애고, 로그의 출력을 지원함


설치법

1. 다운로드 받은 파일의 압축을 푼다.
2. \logging-log4j-1.2.14\logging-log4j-1.2.14\dist\lib 폴더 이동
3. log4j-1.2.14.jar 파일을 web-inf/lib 혹은 tomcat의 common/lib 폴더에 넣는다. 또는 eclipse상에서 추가를 한다.
4. \logging-log4j-1.2.14\logging-log4j-1.2.14\examples 폴더의 샘플들을 참고하여 log4j.properties 파일을 생성한다.
5. 생성한 프로퍼티 파일을 /src 밑에 넣는다.


log4j 설명
로거, 어펜더, 레이아웃 이 존재함

로거 : 로그의 영역, 또는 로그의 주체, 기록을 담당하는 하나으 객체로 보면 될듯,
    여러개의 로거를 지정하여 하나의 에러에 대해 여러가지 방법으로 기록할 수 있게 지원되는듯
어펜더 : 로그를 출력하는 위치 , 콘솔, html, 파일등등을 지정한다.
레이아웃 : 일단 잘 모르겠음. 레이아웃의 Conversion Pattern 을 이용하여 출력되는 문자열으르 지정할 수 있다.


로그 출력 메서드는 debug(), info(), warn(), error(), fatal() 이 존재한다.

 - 어펜더의 종류는 api를 참고
 - Layout의 종류도 api를 참고

 - 패턴 :
    %m : 로그메시지
    %p : 로깅 레벨
    %r : 실행경과시간
    %c : 로거 이름
    %t : 스레드명
    %x : NDC문서
    %n : 개행문자
    %d : 날짜
    %l : %C,%M($F:%L) 와 동일
    %C : 완전한 클래스명
    %M : 메서드 명
    %F : 파일명
    %L : 라인 번호
    %% : %


참고 URL
http://blog.paran.com/dragonjava/18177298

참고 서적
모델2로 다시 배우는 JSP - 842페이지

참고 소스

properties 파일

log4j.rootLogger=DEBUG, stdout, R

log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d]-[%L line] ::  %5p (%F) - %m%n

log4j.appender.R.Threshold=INFO
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=sample.log
log4j.appender.R.MaxFileSize=2KB
log4j.appender.R.MaxBackupIndex=2
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%5p (%F:%L) - %m%n


JAVA 파일

package log;

import org.apache.log4j.Logger;

public class TestApp {
    static Logger logger = Logger.getLogger(TestApp.class);
   
    public static void printLog(String msg) {
        if(logger.isDebugEnabled()) {
            logger.debug(msg);
        }
       
    }
    public static  void main(String args[]) {
        logger.debug("디버그");
        logger.info("정보");
        logger.warn("경고");
        logger.error("에러");
        logger.fatal("치명적에러");
       
    }
}