log 의 올 바른 사용 방법

log4j 든 comons - logging 이 든 프로그램 에서 사용 할 때 다음 과 같은 절차 가 필요 하 다 는 것 을 알 수 있 습 니 다.
1. 초기 화, 정적 인 스 턴 스 생 성: comons - logging 에서: private   static  Log log  =  LogFactory.getLog(TestLog. class );   로그 4j: static  Logger logger  =  Logger.getLogger(TestLog4j. class );  PropertyConfigurator.configure( " log4j.properties " );  두 번 째 문장 은 생략 할 수 있 고 부족 한 상황 에서 그 는 스스로 log4j. properties 를 찾 을 것 이다.
2. 프로그램 에서 사용: logger. debug ("Here is some DEBUG");logger.info( " Here is some INFO " );   logger.warn( " Here is some WARN " );   만약 이렇게 한다 면, 모든 프로그램 에서 정적 실례 를 생 성 할 것 이다. 만약 비교적 큰 프로젝트 라면, 이렇게 하 는 것 은 타당 하지 않다.전체 프로그램 에서 인 스 턴 스 를 만 들 수 있 습 니 다. 즉, 초기 화 입 니 다. 전체 프로그램 에서 이 인 스 턴 스 를 사용 합 니 다.예 를 들 어, 우 리 는 로그 초기 화 클래스 를 작성 합 니 다. 다음 과 같 습 니 다.
package myb.hi.core.log;

import org.apache.commons.logging.*;

public class Logs {
	private static Log log;
	/**
	 * Define a static Log variable,
	 */
	static {
		try {
			log = LogFactory.getLog(Logs.class);
		} catch (Exception ex) {
			System.out.println("can't init the Logger, caused by: " + ex);
		}
	}

	/**
	 * Get the log object
	 * 
	 * @return Log
	 */
	public static Log getLogger() {
		return log;
	}
}

 위의 코드 는 commons - logging 을 사용 하여 정적 로그 인 스 턴 스 를 생 성 합 니 다. 다음 프로그램 은 이렇게 할 수 있 습 니 다. Logs. getLogger (). info ("begin Action: UserBaseInfoAction. getSingleUserInfo ()");DBSession.begin();String fname=userForm.getFname();userForm=UserBaseInfoBusiness.getSingleUserInfo(DBSession.getSession(),fname);DBSession.commit();request.setAttribute("userInfo",userForm);Logs.getLogger().info("end Action: UserBaseInfoAction.getSingleUserInfo()"); 기록 할 곳 에서 Logs. getLogger () 를 사용 하여 이 log 인 스 턴 스 를 얻 은 다음 에 그의 방법 (info, debug, error 등) 을 호출 합 니 다. Log4j 의 실현 방법 은 비슷 합 니 다. 초기 화 클래스 는 이렇게 쓸 수 있 습 니 다.
package myb.hi.core.log;
 
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
 
public class Logs {
       private static Logger log logger;
       /**
		 * Define a static Log variable,
		 */   
              static{
                     try{
                            logger=Logger.getLogger(LogInit.class);      
                            // DOMConfigurator.configure("E:/study/log4j/log4j.xml");//  .xml  
                          // PropertyConfigurator.configure("log4j.properties");//  .properties  
							// }catch(Exception ex){
                            System.out.println("can't init the Logger, caused by: "+ex);
                     }
              }
       
       /**
		 * Get the log object
		 * 
		 * @return Log
		 */
       public static Logger getLogger(){
              return logger;
       }
}

 
응용 프로그램의 호출 은 완전히 같다.
log4j. properties 파일 에서 logger 가 정의 하 는 로그 단 계 는 appender 와 다 를 수 있 습 니 다.logger 를 정의 할 때 로그 단 계 를 최대한 낮 게 쓰 십시오.appender 에서 로그 단 계 를 정의 할 때 필요 에 따라 쓸 수 있 습 니 다.예 를 들 어 하나의 logger, log4j. rootLogger = DEBUG, CONSOLE, A1 을 DEBUG 로 정의 합 니 다. appender 가 어떻게 정의 하 든 출력 이 있 을 것 입 니 다.log4j. rootLogger = INFO, CONSOLE, A1 을 INFO 로 정의 하면 appender 의 정 의 는 그 보다 높 아야 합 니 다. appender 가 DEBUG 로 정의 하면 출력 되 지 않 습 니 다. 마찬가지 로 프로그램 에서 logger 를 호출 할 때 호출 하 는 방법 등급 도 logger 가 정의 하 는 등급 보다 높 아야 출력 이 있 습 니 다.예 를 들 어 log4j. rootLogger = INFO, CONSOLE, A1 은 INFO 로 정의 되 고 프로그램 에서 Logs. getLogger (). info () 방법 은 출력 할 수 있 습 니 다.Logs. getLogger (). debug () 방법 은 출력 되 지 않 습 니 다. 로그 파일 출력 경로경 로 를 지정 하지 않 으 면 로그 파일 은 실행 디 렉 터 리, 즉 서버 의 bin 디 렉 터 리 에 출력 됩 니 다. 예 를 들 어 아래: log4j. appeender. A1. File = SampleMessages. log4j 응용 서버 가 tomcat 를 사용한다 고 가정 하면 SampleMessages. log4j 파일 은 tomcat 에 디 렉 터 리 를 설치 한 bin 하위 디 렉 터 리 에 있 습 니 다.로그 파일 을 통일 적 으로 저장 하기 위해 서 는 절대 경로 나 상대 경 로 를 사용 하 십시오. 예 를 들 어 아래: log4j. appender. A1. File =.. / logs / SampleMessages. log4j 와 같은 로그 파일 은 tomcat 의 logs 디 렉 터 리 에 놓 입 니 다.

좋은 웹페이지 즐겨찾기