티스토리 뷰

Java & Kotlin

java logback Library

필자A 2021. 9. 27. 22:45

자바에는 여러 로깅 프레임워크가 존재합니다.

 

SLF4 J : java진영 로깅 api들의 추상체

파사트 패턴 및 추상화를 통해 기능 제공

logback, log4 j... : 구현체

 

log4j는 이미 개발이 중단되었으며

사람들은 logback, log4j2를 사용 권장을 합니다..

 

구글에서 검색을 하면 logback이 약 100만 개

log4j2가 50만 개 결과가 나옵니다.

 

정보량을 생각해서 logback을 선택하겠습니다.

 


사용을 위해서는  

sfl4 j

logback-core

logback-classic

3개의 라이브러리가 필요합니다.

 

Logger logger = LoggerFactory.getLogger(temp2.Main.class);

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

 

log기능 사용을 위해 static메서드로 구현된

getLogger에서 Logger를 객체를 받아왔습니다.

 

임포트에 패키지명을 보면 모두 slf4j로 되어있습니다.

slf4j의 스펙만 알아두면 기능을 사용할 수 있습니다.

 

http://logback.qos.ch/manual/introduction.html

대부분의 경우 로깅에 관한 한 클래스는 SLF4J 클래스만 가져오면 됩니다. 따라서 모든 클래스는 아니더라도 대다수의 클래스가 SLF4 J API를 사용하고 로그 백의 존재를 잊게 됩니다.


로그 백 구조

 

logger, appender, layout

 

(함께 작동하여 개발자가 메시지 유형 및 수준에 따라 메시지를 기록하고

런타임 시 이러한 메시지의 형식과 보고 위치를 제어할 수 있습니다.)

 

logger <- 메시지에 대한 콘텍스트, 0개 이상의 appender 설정

appender <- 로그 메시지 출력 위치, 형식...

layout <- 메시지 형식 지정

 

 

 

계층

 

logback의 로그 계층은 '.'을 기준으로 한

패키지 형식의 이름으로 기반으로 합니다.

'com.foo'로거는 'com.foo.bar'로거의

부모입니다.

 

로거의 레벨이 명시가 안되어있다면

부모 로거의 레벨을 상속받게 됩니다.

 

com.foo의 레벨이 info로 명시되어있고

com.foo.bar의 레벨을 명시하지 않으면

com.foo.bar의 레벨은 info가 됩니다.

 

그리고

루트 로거는 로거 계층의 맨 위에 있습니다.

n개의 로거에 레벨을 명시하지 않으면

모두 루트 로거의 디폴트 레벨인 'debug'를

상속받습니다.

 

로그의 레벨

TRACE < DEBUG < INFO < WARN < ERROR
출력시 각 레벨은 상위 레벨에 포함됩니다.


(level을 debug을 trace는 찍히지 않음!)

appender 누적

 

logger는 자신의 appender에게만 로그를

전달하지 않고

상위 logger에게도 로그를 전달합니다.

하지만 부모logger에 계속 log가 전달되어서

중복으로 로그가 찍힐수 있습니다.

 

additivity="false"

속성을 상위 'b'로거에 명시하면

명시한 'b'로거의 상위 로거부터는 

로그 전달이 안됩니다.

 


rollover

 

타깃 파일을 바꾸는 조건

logging.log에 어펜드하다가 조건이 충족하면

새로운 파일로 타깃을 변경

 

example)

조건이 날짜 단위일경우

1월1일 로그 -> a파일

1월2일 로그 -> b파일

 

RollingPolicy(i)

(롤오버 발생시의 동작을 정의)

 

TimeBasedRollingPolicy 

FixedWindowRollingPolicy

 

TriggeringPolicy(i)

(롤오버 활성화 시기를 정의하는 클래스)

 

SizeBasedTriggeringPolicy

 

timeBasedFileNamingAndTriggeringPolicy

 

반응형

'Java & Kotlin' 카테고리의 다른 글

자바 상속 (java Inheritance)  (0) 2021.10.03
apache와 tomcat  (0) 2021.09.30
sql_mode=only_full_group_by  (0) 2021.08.30
java)linkedList 구현  (0) 2021.08.13
패스워드 암호화(작성중)  (0) 2021.08.04
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함