Log4J 의 사용 을 간단히 소개 합 니 다.

1.앞에서 말 했 듯 이 자바 의 개원 프로젝트 가 너무 많 습 니 다.이런 곳곳에 꽃 이 피 는 국면 은 중국 5 대 10 개국 시대 의'백가쟁명','백화 쟁명'의 번영 을 따라 잡 을 수 있 습 니 다.자바 기술 을 사용 하면 우리 의 프로젝트 는 자바 기반 개발 제품 을 구 매 할 필요 가 거의 없습니다.하나의 오픈 소스 제품 을 구조 사의 손 을 거 쳐 합 리 적 으로 조합 하고 연결 하면 유연성 이 좋 고 성능 이 좋 은 상업 제품 을 만 들 수 있 습 니 다.의심 할 여지없이 유행 하 는 로그 기록 도구 로 서 Log4j 는 자바 오픈 소스 프로젝트 에서 가장 빛 나 는 부분 중 하나 입 니 다.필자 가 본 자바 프로젝트 는 십중팔구 Log4j 를 사 용 했 는데 그 원인 을 따 져 보면 다음 과 같은 몇 가지 가 있다 고 생각 합 니 다.a)Log4j 는 대부분의 웹 응용 서버 의 지 지 를 받 고 있 습 니 다.제 가 현재 알 고 있 는 바 와 같이 tomcat,weblogic,websphere,jboss 는 모두 log4j 를 지원 합 니 다.b)빠 르 고 강력 한 기능:Log4J 프로필 은 콘 솔,파일,스크롤 백 파일,로그 메 일 발송,데이터베이스 로그 시트 출력,사용자 정의 탭 등 모든 기능 을 실현 합 니 다.속도 에 있어 log 4 j 가 나타 나 기 시 작 했 을 때 운행 을 중시 하 는 속도 가 1 위 를 차 지 했 고 꾸준히 개선 하고 보완 했다.c)사용 이 간단 하고 편리 합 니 다.간단 한 log4j-1.2.x.jar 를 가 져 온 다음 프로그램 류 의 시작 부분 에 다음 private final static Logger log=Logger.getLogger(ClassName.class)를 쓰 십시오.이렇게 하면 로그 대상 log 를 얻 을 수 있 고 특정한 목표 에 로 그 를 쉽게 쓸 수 있 습 니 다.2.왜 Log4j 가 필요 합 니까?프로젝트 의 디 버 깅 은 log4j 가 발생 하 는 내 적 구 동력 의 원시 적 인 방법 으로 정 보 를 화면(console)에 출력 하고 JDK 가 제공 하 는 System.out.println 을 이용 하 는 것 입 니 다.그러나 이렇게 하 는 나 쁜 점 은 분명 하 다.a)정보의 수출 이 원활 하지 않 고 번거롭다.예 를 들 어 실행 중인 파일 이름,줄 수,현재 시간 등 을 출력 하려 면 println 이 원시 적 으로 보 입 니 다.b)출력 내용 과 형식 을 바 꾸 려 면 원본 프로그램 을 다시 컴 파일 해 야 합 니 다.c)더 심각 한 것 은 프로그램 에 println 이 많 으 면 프로그램의 성능 에 심각 한 영향 을 줄 수 있다 는 것 이다.3.Log4j 가 사용 하 는 몇 가지 관건 은?루트 기록 기(Logger),출력 단(appenders)과 레이아웃(layouts)a)은 루트 기록 기의 형식 을 log4j.rootLogger=[level],appendName 1,appendName 2,...appendNamen 으로 정의 합 니 다.같은 기록 기 는 여러 개의 출력 단 을 가 질 수 있다.PS:level 의 등급(이 단 계 는 사용자 정의 할 수 있 습 니 다.시스템 은 기본적으로 다음 단 계 를 제공 합 니 다)◆debug//디 버 깅 정보◆info//일반 정보◆warn//경고 정보◆error//오류 정보◆fatal//치 명 적 인 오류 정보 위 에 열거 한 것 은 log 4 j 의 출력 등급 입 니 다.log 4 j 는 위 에서 아래로 각각 ERROR,WARN,INFO,DEBUG 를 사용 합 니 다.정 의 된 단계 가 info 라 고 가정 하면 error 와 warn 의 로 그 는 그 보다 낮은 debug 정 보 를 표시 하지 않 습 니 다.b)appender 의 출력 목적 지 를 log4j.appeender.appenderName=fully.qualified.name.of.appeender.class 로 정의 합 니 다.log4j 는 다음 과 같은 몇 가지 자주 사용 하 는 출력 목적 지 를 제공 합 니 다.◆org.apache.log4j.consoleAppender,로그 정 보 를 콘 솔◆org.apache.log4j.FileAppender 에 출력 하고 로그 정 보 를 한 파일 에 출력 합 니 다◆org.apache.log4j.Daily Rolling FileAppender,로그 정 보 를 한 파일 에 출력 합 니 다.또한 매일 새로운 로그 파일◆org.apache.log4j.RollingFileAppender 로 로그 정 보 를 파일 에 출력 합 니 다.지정 한 파일 의 사 이 즈 를 통 해 파일 크기 가 지정 한 크기 에 이 르 렀 을 때 자동 으로 파일 이름 을 바 꿉 니 다.예 를 들 어 example.log 라 는 문 서 는 example.log.1 로 이름 을 바 꾸 고 새로운 example.log 파일 을 만 듭 니 다.새 파일 이 다시 지정 한 크기 에 도달 하면 자동 으로 파일 을 example.log.2 로 바 꾸 고 example.log 파일 을 만 듭 니 다.이 유추 에 따 르 면 example.log.MaxBackupIndex,MaxBackupIndex 의 값 은 설정 파일 에서 정의 할 수 있 습 니 다.◆org.apache.log4j.Writer Appender,로그 정 보 를 임의의 지정 한 곳 으로 스 트림 형식 으로 보 냅 니 다.◆org.apache.log4j.jdbc.JDBCappender,JDBC 를 통 해 로그 정 보 를 데이터베이스 에 출력 한다.c)출력 형식(레이아웃)layout Log4j 는 몇 가지 레이아웃 을 제공 합 니 다.◆org.apache.log4j.HTML Layout,HTML 표 형식 으로 레이아웃◆org.apache.log4j.PatternLayout,레이아웃 모드◆org.apache.log4j.Simple Layout 를 유연 하 게 지정 할 수 있 습 니 다.로그 정 보 를 포함 하 는 단계 와 정보 문자열 은 PatternLayout 레이아웃 을 정의 하 는 문 구 를 log4j.appeender.stdout.layot=org.apache.log4j.PatternLayout log4j.appender.stdout.layot.ConversionPattern=%d{ABSOLUTE}%5p%c{1}-%m%n PS:ConversionPattern 매개 변수의 형식 의미 형식 명 의미%c 출력 로그 정보 에 속 하 는 클래스 의 전체 이름%d 로 지 는 것 을 정의 합 니 다.로그 시점 의 날짜 나 시간,기본 형식 은 ISO 8601 이 며,다음 형식 도 지정 할 수 있 습 니 다.예 를 들 어%d{yy-MM-dd HH:mm:ss},출력 유사:2002-10-18-22:10:28%f 출력 로그 정보 에 속 하 는 클래스 이름%l 출력 로그 이벤트 의 발생 위치,로그 정 보 를 출력 하 는 문 구 는 로그(message)의 message%n 에서 Enter 줄 바 꿈 자 를 출력 합 니 다.Windows 플랫폼 은'\r'이 고 유 닉 스 플랫폼 은'%p 출력 우선 순위'입 니 다.즉,DEBUG,INFO,WARN,ERROR,FATAL 입 니 다.debug()출력 을 호출 하 는 경우 DEBUG 입 니 다.이 유추%r 는 로그 정 보 를 출력 하 는 데 걸 리 는 밀리초%t 출력 으로 로그 이 벤트 를 만 드 는 스 레 드 이름 4,log4j 의 설정 파일 입 니 다.log4j.properties 또는 log4j.xml a)는 Log4J◆프로그램 에서 Basic Configurator.configure()방법 을 설정 할 수 있 는 몇 가지 방법 이 있 습 니 다.◆설정 을 파일 에 넣 고 명령 행 매개 변 수 를 통 해 파일 이름 을 전달 하고 Property Configurator.configure(args[x])를 통 해 분석 하고 설정 합 니 다.◆설정 을 파일 에 넣 고 환경 변 수 를 통 해 파일 이름 등 정 보 를 전달 하고 log4j 의 기본 초기 화 과정 을 이용 하여 분석 하고 설정 합 니 다.◆설정 을 파일 에 넣 고 서버 설정 을 통 해 파일 이름 등 정 보 를 전달 하고 특수 한 servlet 를 이용 하여 설정 을 완성 합 니 다.b)프로필 초기 화:응용 서버 를 통 해 초기 화 완료 servlet 보조 로 초기 화 c)log4j.properties 파일 예제
<ccid_code>log4j.rootLogger=INFO, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=/webserver/specialTraining3/wangzj.log
log4j.appender.logfile.MaxFileSize=51200KB
log4j.appender.logfile.MaxBackupIndex=3
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - <%m>%n</ccid_code>

5.log4j 로 하나의 예 를 연습 합 니 다 Test:com.webage.servlets.MyServlet Log4j.properties 파일:
<ccid_code>log4j.rootLogger=DEBUG,ROOT
log4j.appender.ROOT=org.apache.log4j.RollingFileAppender
log4j.appender.ROOT.File=E:\wangzj\myapplication.log
log4j.appender.ROOT.MaxFileSize=1000KB
log4j.appender.ROOT.MaxBackupIndex=5
log4j.appender.ROOT.layout=org.apache.log4j.PatternLayout
log4j.appender.ROOT.layout.ConversionPattern=[%d]%t%c%-5p-%m%n
ootLogger=DEBUG,CONSOLE,A1,im
log4j.addivity.org.apach</ccid_code>

MyModel.java 파일:
<ccid_code>package com.webage.model;
import org.apache.log4j.Logger;
public class MyModel {
static Logger logger = Logger.getLogger(MyModel.class);;
public void checkValid(String name, String value) throws Exception {
logger.debug("ENTRY");
logger.debug(" : " + name);
if (value == null) {
throw new Exception(" 。");
}
if (value.trim().length() == 0) {
throw new Exception(" 。");
}
logger.debug("EXIT");
}
}</ccid_code>

MyServlet.java
<ccid_code>package com.webage.servlets;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import com.webage.model.MyModel;
public class MyServlet extends HttpServlet {
Logger logger = Logger.getLogger(MyServlet.class);
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
logger.debug("ENTRY");
MyModel model = new MyModel();
resp.getWriter().println("Log4J ");
try {
model.checkValid("firstName", req.getParameter("firstName"));
} catch (Exception e) {
logger.error("doGet .", e);
}
logger.debug("EXIT");
}
public void init() throws ServletException {
super.init();
logger.info("Servlet ...");
}
}</ccid_code>

jar 가방 두 개가 필요 합 니 다:servlet.jar 와 log4j-1.2.9.jar.준비 가 다 되 었 습 니 다.tomcat 또는 weblogic 에서 실 행 됩 니 다.필 자 는 잠시 weblogic 로 대 체 했 습 니 다.Logger logger=Logger.getLogger(MyServlet.class)를 실행 할 때마다;E:\wangzj\myapplication.log 파일 을 생 성 합 니 다.

좋은 웹페이지 즐겨찾기