Spring Log4j 설정 매 뉴 얼

우리 의 일상적인 개발 에서 로그 기록 은 매우 중요 하 다.우 리 는 테스트 에서 코드 변수 변 화 를 감지 하고 코드 운행 궤적 을 추적 할 수 있다.기본 적 인 응용 단계 로그 기능 도 만 들 수 있 습 니 다.Log4j 는 Apache 의 오픈 소스 프로젝트 로 섬세 한 로그 관리 방식 을 제공 합 니 다.설정 파일 을 통 해 모든 로그 의 출력 형식 과 목적 지 를 제어 할 수 있 습 니 다.정보의 단 계 를 정의 함으로써 우 리 는 코드 중의 피드백 정 보 를 유연 하 게 스위치 할 수 있다.본 논문 에서 저 희 는 로그 4j 가 Spring 환경 에서 의 설정 을 사용 하여 로그 기능 의 사용 을 보 여 줍 니 다.
웹. xml 에서 의 정의:
<context-param>
  <param-name>webAppRootKey</param-name>
  <param-value>webApp.root</param-value>
 </context-param>

  <context-param>
  <param-name>log4jConfigLocation</param-name>
  <param-value>/WEB-INF/classes/log4j.properties</param-value>
 </context-param>

   <context-param>
      <param-name>log4jRefreshInterval</param-name>
      <param-value>60000</param-value>
   </context-param>  
    <listener>
      <listener-class>
        org.springframework.web.util.Log4jConfigListener
      </listener-class>
   </listener>

 
실제 응용 프로그램 에서 저 희 는 웹. xml 에서 다음 과 같은 설정 을 정의 합 니 다. 먼저 log4jConfigLocation 류 는 log4j 설정 파일 경 로 를 정의 합 니 다.Log4J's watchdog thread will asynchronously check whether the timestamp of the config file has changed, using the given interval between checks. A refresh interval of 1000 milliseconds (one second), which allows to do on-demand log level changes with immediate effect, is not unfeasible.
Log4jConfigListener 는 spring 에서 제공 하 는 도구 클래스 입 니 다. log4j 의 감시 스 레 드 를 열 고 60 (log4jRefreshInterval 변수 정의) 초 마다 로그 설정 변 화 를 감지 합 니 다. 웹 서 비 스 를 다시 시작 할 때마다 새로운 설정 을 적용 할 필요 가 없습니다.tomcat 에 서 는 웹 응용 프로그램 에 따라 시스템 속성 을 구분 하지 않 습 니 다.따라서 모든 웹 응용 프로그램 에 유일한 'webAppRootkey' 를 정의 해 야 합 니 다. 웹 App. root 라 고 이름 을 지 었 습 니 다. 시작 환경 에서 Log4jConfigListener 는 특정한 값 을 웹 App. root 변수 에 주입 합 니 다.구체 적 으로 어떤 값 인지, 왜 우리 가 이렇게 정 의 했 는 지 계속 내 려 다 보 세 요.
다음 작업 은 log4j. properties 설정 입 니 다.spring 도 xml 설정 파일 형식 을 지원 합 니 다.프로젝트 에 서 는 데이터베이스 작업 로그, 메 일 로그 또는 사용자 작업 로그 등 다양한 로그 수요 가 있 습 니 다.모든 로 그 를 통 일 된 파일 로 출력 할 수도 있 고 기능 모듈 에 따라 다른 로그 파일 을 정의 할 수도 있 습 니 다.
log4j.logger.uk.salford.ian.site.mvc=DEBUG,stdout,modellog4j.logger.uk.salford.ian.site.service=DEBUG,stdout,db
이 예 에서 우 리 는 두 기능 모듈 에 대해 서로 다른 로그 정 의 를 내 립 니 다.uk. salford. ian. site. mvc 와 uk. salford. ian. site. service 는 같은 프로젝트 의 두 개의 가방 으로 각각 뮤 직 비디오 모듈 과 service 서비스 모듈 을 대표 합 니 다.log4j 는 패키지 급 로그 정 의 를 지원 하기 때문에 우 리 는 서로 다른 기능 모듈 에 따라 해당 하 는 정 의 를 할 수 있 습 니 다.또한, log4j 는 패키지 로그 의 계승 을 지원 합 니 다.모든 하위 패 키 지 는 뮤 직 비디오 나 service 에서 아버지의 로그 정 의 를 계승 할 수 있 습 니 다.DEBUG, stdout, model: DEBUG 는 로그 의 정보 표시 단 계 를 대표 합 니 다.레벨 은 OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL 또는 사용자 가 정의 하 는 레벨 로 나 뉜 다.Log4j 는 ERROR, WARN, INFO, DEBUG 등 네 단계 만 사용 하 는 것 을 권장 합 니 다.이 단계 에서 정 의 된 단 계 를 통 해 프로그램 에서 해당 단계 의 로그 정보의 스위치 를 제어 할 수 있 습 니 다.예 를 들 어 여기 서 INFO 단 계 를 정의 하면 프로그램의 모든 DEBUG 등급 의 로그 정 보 는 인쇄 되 지 않 습 니 다.stdout, model 은 두 개의 사용자 정의 appender 이름 입 니 다.
그 중에서 Log4j 가 제공 하 는 appender 는 다음 과 같은 몇 가지 가 있 습 니 다.    org. apache. log4j. ConsoleAppender (콘 솔),    org. apache. log4j. FileAppender (파일),    org. apache. log4j. Daily RollingFileAppender (매일 로그 파일 생 성),    org. apache. log4j. RollingFileAppender (파일 크기 가 지정 한 크기 에 도 달 했 을 때 새 파일 생 성),    org. apache. log4j. WriterAppender (로그 정 보 를 임의의 지정 한 곳 으로 스 트림 형식 으로 보 냅 니 다) 다음은 appender 의 정 의 를 살 펴 보 겠 습 니 다.
${webApp. root} / WEB - INF / logs / model / model. log 로 정 보 를 출력 합 니 다.그 중에서 webApp. root 값 은 어디서 났 습 니까? 웹. xml 의 정 의 를 기억 하 십 니까? listener 에서 일 할 때 사이트 디 렉 터 리 경 로 를 사용자 정의 webApp. root 변수 에 주입 합 니 다.이렇게 하면 로그 경 로 를 절대적 인 d: \ log. log 로 쓰 는 것 이 아니 라 상대 적 인 경 로 를 사용 하여 관리 할 수 있 습 니 다.
다음은 db 의 정의 입 니 다. db 작업 의 로그 정 보 를 db 디 렉 터 리 의 db 파일 로 출력 합 니 다.
log4j.appender.db=org.apache.log4j.FileAppenderlog4j.appender.db.File=${webApp.root}/WEB-INF/logs/db/db.loglog4j.appender.db.Append=truelog4j.appender.db.layout=org.apache.log4j.PatternLayoutlog4j.appender.db.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n
마지막 으로 클래스 에서 호출 되 었 습 니 다. 아주 간단 합 니 다.
 @InjectDisable static Logger logger = Logger.getLogger(IndexAction.class);        logger.debug("it's show time?################################");        logger. error        logger. info ("info 는 info 를 뿌 려 \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # \ # # \ # \ # # \ # \ #");
메모: @ Inject Disable 은 Easyjf 에 필요 합 니 다.기본적으로 Easyjf 는 속성 을 자동 으로 주입 합 니 다. @ InjectDisable 을 통 해 주입 을 닫 고 속성 값 을 관리 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기