PostController
아래 추가
@GetMapping("test-log")
public void testLog(){
logger.trace("Trace Log");
logger.debug("debug log");
logger.info("info log");
logger.warn("warn log");
logger.error("error log");
}
Log 레벨
ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF
- WARN을 로그 레벨로 지정을 하게 되면 그 아래 WARN, ERROR, FATAL까지 로그다
-application.yml
에서 로그 레벨 지정하기
logging:
level:
root: debug
java -jar spring-boot.jar --trace
java -jar spring-boot.jar --debug
logging.level.root
: 어플리케이션 전체 기본 로그 레벨 설정logging:
level:
root: warn
#패키지 이름
djbdy.jpa: info
LogBack
logback 공식 document - appender
1. resource
에 logback-spring.xml
선언
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOGS" value="./logs" /> #{LOGS} 에 들어가는 애
<appender name="Console"
#Console 이라는 변수에다가 appender을 적용해주겠다는 것
class="ch.qos.logback.core.ConsoleAppender">
# 클래스는 appender에서 기본적으로 구현하고 있는 애를 사용하겠다
<layout class="ch.qos.logback.classic.PatternLayout">
#어떤 패턴 줘서 메시지가 어떤 패턴으로 나올 지 정하는 애
=> 아래 대충 써진거 보면 로그가 날짜 부분은 검정으로 나왔다가 , 하이라이트 되는 부분 등 색 지정됨 (아래 사진 첨부)
<Pattern>
%black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{0}): %msg%n%throwable
# 클래스 이름, %c는 클래스명 자체만 출력하게 하도록
</Pattern>
</layout>
</appender>
<appender name="RollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS}/spring-boot-logger.log</file>
#여기에 {LOGS}에 들어가는 것은 위에
# property name="LOGS" value="./logs" /> 에서
# 알려준 VALUE 값이 들어가게 되는 것
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d %p %C{0} [%t] %m%n</Pattern>
</encoder>
<rollingPolicy
#로그들을 여기서 정해진 파일 명으로 저장해주는 규칙
#archived 라는 곳에 저장이 되게 된다
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd-HH-mm-ss}.%i.log
#롤링폴리시에서 주기 선택할 때 위와 같이
</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
#maxfile은 로그 파일의 최대 크기를 지정해놓은 것!~
#용량 넘어가면 다음 파일로 넘겨서 추가 파일 생성
<maxHistory>10</maxHistory>
#아카이브에 들어갈 수 있는 최대 갯수
<totalSizeCap>20GB</totalSizeCap>
#총 사이즈
</rollingPolicy>
</appender>
<root level="warn">
#log leve 설정도 가능
#이떄 루트의 경우엔 전체 어플리케이션에 적용되는 것
<appender-ref ref="RollingFile" />
#우리가 만들어놨던 로그 설정들을 appender-ref를 통해 가져다가 사용 가능
# 로그 설정 해놔도 저 root 밑의 애들에
# appender-ref 를 통해 지정해주지 않으면
# 해당 로그 설정 하나도 실행 안되게 된당
<appender-ref ref="Console" />
</root>
# 로거에 이름을 주어서 어떤 패키지명 기준으로 로그 주는 것이 가능
# 아래와 같이 로거 객체를 선언 ㅇ
# 이 패키지(name)와 같은 로거들은
# 즉 패키지명이 아래 name인 애들은
# level에서 출력되게 해주세여~하는 것
# additivity : 루트 로거와 별개 작성 여부에 관한 설정,
# false 면 로그 이벤트가 부모에서 전달되지 않는다.
# true 면 로거와 동시에 false는 따로 취급
<logger name="dev.aquashdw.jpa.aspect" level="trace" additivity="false">
<appender-ref ref="Console" />
#appender-ref는 어떤 어펜더 사용할 지 정해주는 것
# 이렇게 설정되면 난 콘솔에 로그 출력할고얌 하는 것
</logger>
</configuration>
로그 출력 결과
위의 코드 돌리고나면 이렇게 logs 라는 파일도 생성됨ㅋ 먼가 기욥
policy에 맞춰 archived 에 생성됨
또한 플러스로 profile이 어떤 상태냐에 따라서 어떤 로그 xml을 실행시킬 건지 설정도 가능
logback-spring-test.xml
만들기
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOGS" value="./logs" />
<appender name="Console"
class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{0}): %msg%n%throwable
</Pattern>
</layout>
</appender>
<appender name="RollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS}/spring-boot-logger.log</file>
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d %p %C{0} [%t] %m%n</Pattern>
</encoder>
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd-HH-mm-ss}.%i.log
</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>10</maxHistory>
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
</appender>
<root level="warn">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</root>
<logger name="dev.aquashdw.jpa.aspect" level="trace" additivity="false">
<appender-ref ref="Console" />
</logger>
</configuration>
application-test.yml
logging:
config: classpath:logback-spring-test.xml