본문 바로가기

Frameworks/spring boot

log4j 사용하기

log4j

▶ log4j 란?

프로그램을 작성하는 도중에 로그를 남기기 위해 사용되는 자바기반 로깅 유틸리티이다. 디버그용 도구로 주로 사용되고 있다. 

즉, 로그문의 출력을 다양한 형태로 도와준다.

- 공식페이지 : https://logging.apache.org/log4j/2.x/

 

▶ log4j의 레벨

로그 레벨 설명
fatal 아주 심각한 에러가 발생한 상태 
error 요청을 처리하는 중 문제가 발생한 상태 
warn 처리 가능한 문제, 향후 에러의 원인이 될 수 있는 경고 메세지 
info 로그인, 상태 변경과 같은 정보 메세지
debug 개발 시 디버그 용도로 사용한 메시지
trace 신규 추가된 레벨로 디버그 레벨이 넘 광범위한 것을 해결하기 위해서 좀 더 상세한 상태를 나타냄

 

▶ log4j의 레이아웃

형식 설명
%P debug, info, warn, error, fatal 등 priority 출력 
%m 로그 내용 출력
%d 발생 시간 출력 
%t 발생 쓰레드의 이름 출력 
%n 개행 문자 출력 
%c 패키지 출력 / {숫자} 를 이용하여 단계별 출력, ex) %x{5} 
%C  클래스 명 출력 / {숫자} 를 이용하여 단계별 출력, ex) %x{5}   
%L 로깅이 발생한 caller 의 라인 수 출력 

 

▶ log4j의 설정

 - pom.xml

Default : logback 사용하지 않고 다른 로깅 모듈 사용 시에는 logback 모듈에 대한 의존성을 제거(<exclusions>)

<!-- 기본값:logback 제외 exclusion:spring-boot-starter-logging -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter</artifactId>
   <exclusions>
       <exclusion>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-logging</artifactId>
       </exclusion>
    </exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>
<!-- log4j2  설정 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-web -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1 -->
<dependency>
    <groupId>org.bgee.log4jdbc-log4j2</groupId>
    <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
    <version>1.16</version>
</dependency>

 

 - log4j.xml

<Configuration status="info" monitorInterval="30">
    <Properties>
        <Property name="LOG_FORMAT">[%d{HH:mm:ss}][%-5p]\n\t\t%m%n</Property>
    </Properties>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="${LOG_FORMAT}"/>
        </Console>
    </Appenders>
    <Loggers>
         <!-- Log everything in custom package -->
         <Logger name="com.boraji.tutorial.springboot" level="error" additivity="false">
             <AppenderRef ref="Console" />
         </Logger>
         <!-- Log everything in Spring Boot -->
         <Logger name="org.springframework.boot" level="error" additivity="false">
             <AppenderRef ref="Console" />
         </Logger>
         <!-- Log everything in Spring Core -->
         <Logger name="org.springframework.core" level="error" additivity="false">
             <AppenderRef ref="Console" />
         </Logger> 
         
         <Logger name="jdbc.sqltiming" level="info" additivity="false">
             <AppenderRef ref="Console" />
         </Logger>
    
        <Root level="error">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

 

 - log4jdbc.log4j2.properties

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0

 

 - application.properties

logging.config=src/main/resources/log4j2.xml

'Frameworks > spring boot' 카테고리의 다른 글

spring boot - 파일 업로드  (0) 2020.07.15
Mybatis CRUD  (0) 2020.05.26
Mybatis(마이바티스)  (0) 2020.05.25
thymeleaf 의 링크  (0) 2020.05.19
thymeleaf 반복문, 조건문  (0) 2020.05.19