728x90
반응형
로그 : sout(”Hello world”); ⇒ 중요도 분리가 안된다. ⇒ 중요도에 따라 로그레벨 관리 해야한다.
- debug 모드 (모든 로그가 다 나온다.)
- log.debug(”debug 모드입니다.”)
- info 모드
- log.info(”일반로그”)
- error모드 (가장 엄격 , error 로그만 나온다.)
- log.error(”일반로그”)
- 로그 라이브러리 (log4j, logback)
- 로그관리 (debug, info, error)
- 로그파일관리
.yml
logging:
level:
root: info # info로 설정
# trace < debug < info < error 순서의 로그레벨을 가진다.
사용방법 1.
@RestController
@Slf4j // log 어노테이션 (롬복)
public class LogTestController {
@GetMapping("log/test1")
public String testMethod1() {
log.debug("OK1");
log.info("OK2");
log.error("OK3");
return "OK";
}
}

사용방법 2.
package com.encore.board.author.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class LogTestController {
private static final Logger log = LoggerFactory.getLogger(LogTestController.class)
@GetMapping("log/test1")
public String testMethod1() {
log.debug("OK1");
log.info("OK2");
log.error("OK3");
return "OK";
}
}
- Logback
- log4j 보다 빠르고, 효율적이다.
- SLF4J 인터페이스의 기본구현체이다.
로그 파일로 담기
.yml 설정
logging:
file:
name: log/app.log
level:
root: info # info로 설정
# trace < debug < info < error 순서의 로그레벨을 가진다.
log/app.log 이 없으면 로그 파일을 만들어준다. (영구저장)

생성되었다.
yml 에서 로그 설정정보를 자세하게 쓸 수 없어 따로 파일로 분리하도록 하겠다.
log 에러와, info에러를 따로 분리하기 위한 설정을 한다.
yml과 같은 위치에 생성

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!-- console 로그 관련 설정 -->
<appender name = "CONSOLE" class = "ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm} %logger{36}-%msg%n
</pattern>
</encoder>
</appender>
<!-- info 로그의 경우 정상 log 파일로 분리-->
<root level = "info">
<!-- console 출력과, 정상 log파일에 log내용 추가 -->
<appender-ref ref ="CONSOLE"/>
<!-- <appender-ref ref ="FILE"/>-->
</root>
</configuration>
<!--application. yml 에서 설정하던것을
더욱 상세하게 설정하기 위해서 따로 파일을 만든다.
-->

결과가 좀 다르게 나온다.
더 나아가서 에러로그와, info로그를 따로 관리하려고 한다.
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!-- console 로그 관련 설정 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm} %logger{36}-%msg%n
</pattern>
</encoder>
</appender>
<!-- 정상 로그 관련 설정 -->
<!-- 로깅에서 rolling 는 날짜가 변함에 따라 별도의 파일 생성하는 것-->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/app.log</file>
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss} %logger{36}-%msg%n
</pattern>
</encoder>
<!-- 정책-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<!-- 에러 로그 관련 설정 -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>error</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>logs/app-error.log</file>
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss} %logger{36}-%msg%n
</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/app-error.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<!-- info 로그의 경우 정상 log 파일로 분리-->
<root level="info">
<!-- console 출력과, 정상 log파일에 log내용 추가 -->
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
<appender-ref ref="ERROR_FILE"/>
</root>

에러 로그와 info 로그를 따로 관리 할 수 있다.
maxHistory : 날짜
fileNamePattern : 어떻게 넣을지
반응형
댓글