라이브러리 관리
pom.xml : 메이븐을 사용해 프로젝트의 라이브러리를 빌드 처리하기 위한 정보를 제공하는 환경설정파일
로깅 파일 관리


log4j.xml : 로그 구현체 실행에 필요한 정보를 제공하기 위한 환경설정파일
- 로그 구현체 : 로그 팩토리로부터 발생된 로깅정보를 제공받아 기록하기 위한 프로그램
- 프로그램 실행에 대한 정보를 기록하기 위한 프로그램
엘리먼트 : appender
1. appender 엘리먼트 : 로그 구현체를 설정하기 위한 엘리먼트
- name 속성 : 로그 구현체(appender 엘리먼트)를 구분하기 위한 식별자를 속성값으로 설정
- class 속성 : 로그 구현체로 실행하기 위한 클래스를 속성값으로 설정

- 가장 많이 쓰이는 Class : ConsoleAppender
→ class 속성값으로 설정될 클래스는 반드시 Appender 인터페이스를 상속받은 클래스로만 설정
→ ConsoleAppender 클래스 : 로깅정보를 제공받아 콘솔에 기록하기 위한 클래스
1) param 엘리먼트 : Appender 클래스에 필요한 값을 제공하기 위한 엘리먼트
→ Appender 클래스마다 name 속성값과 value 속성값을 다르게 설정하여 사용
2) layout 엘리먼트 : 로깅정보를 제공받아 기록하기 위한 로그패턴을 설정하기 위한 엘리먼트
- class 속성 : 기록 관련 패턴에 대한 정보를 제공하기 위한 클래스를 속성값으로 설정
→ PatternLayout 클래스 : 패턴문자 관련 정보를 제공하기 위한 클래스
* 변환문자(Conversion Character) : 변환문자는 일반문자와 구분하기 위해 % 기호로 시작
→ %c : 로그 이벤트가 발생된 카테고리 이름(패키지가 포함된 클래스)을 기록 - {정수값}을 사용해 원하는 형식의 이름으로 기록 가능
ex) %c{1} : 패키지를 제외한 클래스의 이름을 기록 - xyz.itwill.spring.test = test만 기록 / %c{2} = spring.test 기록
→ %C : 로그 이벤트가 발생된 클래스 이름(패키지 포함)을 기록
ex) %d{yyyy-MM-dd} : [년-월-일] 형식으로 기록
→ %m : 로그 이벤트에 의해 전달된 로그 메세지를 기록
→ %n : 엔터(Enter)를 기록
→ %M : 로그 이벤트가 발생된 메소드의 이름을 기록
→ %p : 로깅 정보를 제공한 로그 이벤트를 기록
- 로그 이벤트 : TRACE >> DEBUG >> INFO >> WARN >> ERROR >> FATAL
→ %t : 로그 이벤트를 발생하 스레드의 이름을 기록
→ %r : 프로그램 시작 이후부터 로깅 정보를 제공받아 기록되는 시간(ms)을 기록
2. logger 엘리먼트 : 특정 패키지의 클래스에서 발생되는 로그 이벤트를 기록하기 위한 엘리먼트
→ logger 엘리먼트는 root 엘리먼트에 설정된 로그 구현체를 제공받아 사용
- name 속성 : 로그 이벤트가 발생될 클래스의 패키지를 속성값으로 설정
- value 속성 : 로그 이벤트를 속성값으로 제공
→ 속성값으로 설정된 로그 이벤트보다 상위 로그 이벤트가 발생된 경우에도 로깅정보 기록
1) level 엘리먼트 : 클래스에 적용될 로그 이벤트를 설정하기 위한 엘리먼트
→ root 엘리먼트의 priority 엘리먼트로 제공되는 로그 이벤트보다 우선 처리
3. root 엘리먼트 : 모든 클래스에서 발생되는 로그 이벤트를 기록하기 위한 엘리먼트
→ logger 엘리먼트는 기본적으로 root 엘리먼트의 정보를 제공받아 사용
1) priority 엘리먼트 : 모든 클래스에 적용될 로그 이벤트를 설정하기 위한 엘리먼트
2) appender-ref 엘리먼트 : 로깅정보를 제공받아 기록하기 위한 로그 구현체(Appender)를 설정하는 엘리먼트
- ref 속성 : appender 엘리먼트의 식별자를 속성값으로 설정