log for java

개발하는 단계에서도 많이 활용할 수 있다.

자바에서 로그 기록을 남기는 라이브러리

 

Log4j를 이용하면 프로그램 실행시, 실행 코드의 수정없이 설정파일을 통해서 로깅작업을 컨트롤 할 수 있다.

Logger계층구조를 이용하면 어떤 로그문을 출력할지 상세하게 컨트롤하기 쉽다

 

Log4j의 주요 구성요소

- Logger : 로깅 정보를 캡쳐

  . 로깅메세지를 appender에 전달(출력할 수 있음 - appender : 어디로 보낼지 역할)

  . log4j의 심장부에 위치

  . 개발자가 직접 로그 출력 여부를 런타임에 조정

  . 로그 레벨을 갖고 있음

- Appender : 다양한 목적지로 로깅 정보를 출력

  . 파일, 콘솔, DB 등.. 출력위치 결정

  . XXXAppender(ConsoleAppender ,FileAppender, JDBCAppender, SMTPAppender(~이메일) 

                             RollingFileAppender, DailyRollingFileAppender, NTEventAppender 등...)

- layouts : 로깅 정보를 위한 다양한 출력 포맷 구성(어떤 형식으로 출력할것인지)

  . 날짜관련 DatePattern있음..

- 로그레벨(6단계)

  . TRACE - 레벨이 제일 낮음

  . DEBUG : 개발시 디버그 용도로 사용한 메세지

  . INFO : 정보메세지 출력 (일반적으로 설정함)

  . WARN : (warnning) 경고메세지

  . ERROR

  . FATAL - 레벨 제일 높음 : 심각한 에러

 

Log4j 설정 방법

- 사이트에서 라이브러리 파일.jar 파일 설치 -빌드패스에 추가

 

log4j.rootLogger = info레벨에서 부터 로그를 출력하겠다. stdout 출력(appender), logfile(appender)환경에 맞게 출력

ConsoleAppender

Target=System.out  = 콘솔의 기본 출력장치

패턴형식 있음.

 

DailyRollingFileAppender = 날짜별로 환경을 만들어서 로그 출력

 

클래스 임포트 - 아파치 제공하는 Logger

로거 객체 만들기

= static Logger logger = Logger.getLogger(Log4jTest.class);

 

- 콘솔 출력 패턴

TRACE (basic.Log4jTest:14) - 이것은 Log4j의 TRACE레벨의 로그 메세지 입니다.

%5p (%C{2}:%L) - %m%n

5: 는 5자리

p : 로그레벨이름 출력

C : 클래스명 출력(%C{2} : 패키지 구조명 뒤에서 두 단계까지만 씀)

L: 라인 수(소스파일의 줄 번호)

m : 메세지 - 로그내용 출력

n: 줄 바 꿈

 

- 파일 출력 패턴

[%d{yyyy-MM-dd HH:mm:ss}] %5p (%C{2} - %M:%L) - %m%n

년도시분초 / 

M : method이름(현재는 메인메소드)

L : 줄번호

 

 %p : debug, info, warn, error, fatal 등의 priority 가 출력된다. 
 %m : 로그내용이 출력됩니다.
 %d : 로깅 이벤트가 발생한 시간을 기록합니다.
		포맷은 %d{HH:mm:ss, SSS}, %d{yyyy MMM dd HH:mm:ss, SSS}같은 형태로 
		사용하며 SimpleDateFormat에 따른 포맷팅을 하면 된다.
 %t : 로그이벤트가 발생된 쓰레드의 이름을 출력합니다. 
 %% : % 표시를 출력하기 위해 사용한다. 
 %n : 플랫폼 종속적인 개행문자가 출력된다. \r\n 또는 \n 일것이다. 
 %c : 카테고리를 표시합니다 
		예) 카테고리가 a.b.c 처럼 되어있다면 %c{2}는 b.c가 출력됩니다. 
 %C : 클래스명을 포시합니다. 
		예) 클래스구조가 org.apache.xyz.SomeClass 처럼 되어있다면 
			%C{2}는 xyz.SomeClass 가 출력됩니다 
 %F : 로깅이 발생한 프로그램 파일명을 나타냅니다. 
 %l : 로깅이 발생한 caller의 정보를 나타냅니다 
 %L : 로깅이 발생한 caller의 라인수를 나타냅니다 
 %M : 로깅이 발생한 method 이름을 나타냅니다. 
 %r : 어플리케이션 시작 이후 부터 로깅이 발생한 시점의 시간(milliseconds) 
 %x : 로깅이 발생한 thread와 관련된 NDC(nested diagnostic context)를 출력합니다. 
 %X : 로깅이 발생한 thread와 관련된 MDC(mapped diagnostic context)를 출력합니다

 

 

'고급JAVA' 카테고리의 다른 글

Servlet 써블릿  (1) 2023.01.18
MVC 패턴과 싱글톤(Singleton) 패턴  (0) 2023.01.11
쓰레드 공부-04 : 쓰레드 상태  (0) 2022.12.27
쓰레드 공부-03 : 쓰레드의 실행제어  (0) 2022.12.27
쓰레드 공부-02  (1) 2022.12.26

+ Recent posts