본문 바로가기
괴발개발/java

로그

by 맛길만걷자 2024. 8. 24.
728x90
반응형

Logging

* 로그(log)란?

- 사전적 의미 : 통나무, 향해 일지, 배의 속력이나 항주한 거리를 계측하는 장치의 총칭.

- 실질적 의미 : 기록을 남기는 것. * 로그 사용 이유 - 애플리케이션 운영 시 로그의 효율적인 관리가 가능하다.(콘솔 또는 특정파일)

- 콘솔 로그를 위해 System.out.print를 사용하는 건 성능저하를 야기함.

 

* 로그의 장점 VS 단점

 

- 장점 : 프로그램의 문제 파악에 용이 빠르고 효율적인 디버깅 가능 수행내역 파악이 쉬움 로그 이력을 파일, DB 등으로 남길 수 있음

 

- 단점 : 로그에 대한 디바이스(파일) 입출력으로 인해 런타임 오버헤드 발생 로깅을 위한 추가 코드로 인해 전체 코드 사이즈 증가 심하게 생성되는 로그는 혼란을 야기하거나 어플리케이션 성능에 영향을 미침 개발 중간에 로깅 코드를 추가하기 어려움

 

* Logging framework ( log4j / logback / slf4j ) - 스프링 프로젝트에는 기본적으로 log4j 라이브러리가 추가되어있고 log4j와 관련된 설정을 담는 log4j.xml 파일을 서버 구동과 동시에 로딩하게 되어 있음. - 하지만 log4j를 이용하여 많은양의 로그를 출력하는 경우 성능 저하가 심해 최근에는 logback 이라는 라이브러리를 사용함.(10배 빠름)

 

- 스프링 프로젝트에서 기존 사용하던 log4j를 새로운 logback로 변경을 해야 하는데 이를 일일이 변경하기에는 비효율적이므로 log4j <-> logback 서로 변환을 해줄 수 있는 slf4j 라이브러리가 존재 (STS 사용 시 pom.xml에 자동으로 slf4h 라이브러리가 추가되어 있음  pom.xml에 예) 카테고리가 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)를 출력 * log4j의 DTD 파일 경로가 변경됨  log4j.xml 2번째 줄 내용을 아래 내용으로 변경

728x90
반응형

'괴발개발 > java' 카테고리의 다른 글

스프링 스케쥴러  (0) 2024.08.23
Spring servlet-context_xml 해석 및 root-context역할  (0) 2024.08.03
Srping web.xml 해석  (0) 2024.08.03
spring 용어 정리 및 mvc 흐름  (0) 2024.08.02
Spring 파라미터 전달방법  (0) 2024.08.02