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 |