SpringBoot에서는 기본적으로 Commonslogging에 대한 구현가능성은 열어두고 있다.
내부적으로 slf4j를 지원한다.
jar console 출력시 옵션 주는 방법
java -jar ***.jar --debug
--debug와같은 형태로 옵션을 주면 된다.
로그 레벨은 다섯단계로 나뉘어진다.
- trace
- debug
- info
- warn
- error
밑으로 갈수록 심각한 오류로 분류된다.
디버그모드로 실행된다.
info로 설정시 info로그레벨로 console에 출력된다.
application.properties에 설정하는 방법
debug=true 로 주면 debug모드로 실행할 수 있다.(default > info)
application.properties
debug=true
trace모드로 서버를 올리고 싶으면 trace=true로 설정해주면 된다.
파일출력 방법
SpringBoot는 기본적으로 콘솔에 로그를 출력한다.
파일로 출력을 원하면 별도로 구성이 필요하다.
logging.file.name과 logging.file.path를 application.properties에 설정해야 한다.
Table 5. Logging propertieslogging.file.namelogging.file.pathExampleDescription
logging.file.name |
logging.file.path |
Example |
Description |
(none) |
(none) |
|
Console에 로깅 |
file명 |
(none) |
my.log |
현재 디렉터리에 해당파일로 로깅 |
file명 |
Specific directory |
/var/log |
해당 디렉터리에 해당 파일로 로깅 |
log파일은 10MB가 되면 rotate한다.
logback.xml설정
gradle 추가
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
-spring 파일명을 사용하길 권장한다.
그렇지 않으면 spring이 완벽하게 파일을 컨트롤할 수 없다고 한다.
logback default 설정
Profile-specific Configuration
profile 설정에 따라 로그레벨을 설정할 수 있다.
spring.profiles.active < 설정
<springProfile name="staging">
<!-- configuration to be enabled when the "staging" profile is active -->
</springProfile>
<springProfile name="dev | staging">
<!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
</springProfile>
<springProfile name="!production">
<!-- configuration to be enabled when the "production" profile is not active -->
</springProfile>
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/tmp/access.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/tmp/access-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
</encoder>
</appender>
<logger name="org.springframework" level="info"/>
<logger name="kr.or.connect" level="debug"/>
<root level="debug">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
configuration에 appender, logger, root를 설정할 수 있다.
appender는 어디에 어떤 포맷으로 남길지 설정하는 부분이다.
대표적으로 ConsoleAppender, FileAppender, RollingFileAppender가 있다.
ConsoleAppender는 콘솔에 출력하는 형태, FileAppender는 파일에 출력, RollingFileAppender는 파일을 날짜별로 rotate하는 appender이다.
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
</encoder>
</appender>
console appender
encoder내부에 Pattern에 출력 형태를 지정할 수 있다.%d{}는 로그가 출력되는 시간이고 내부에는 시간 포맷이다.%-5 level는 로그레벨을 고정폭 5로 출력하라는 의미다.%logger{36} logger이름을 축약해서 출력한다. %m%n 메세지 출력후 줄바꾼다.
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>access.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>access-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
</encoder>
</appender>
RollingFileAppender
Property를 못 읽어오면 경로를 직접 설정해줘야한다.
<property resource="logback.properties" />
'Spring' 카테고리의 다른 글
Spring Cloud Gateway GatewayFilter (0) | 2020.12.29 |
---|---|
Spring Cloud Gateway predicates 테스트 (0) | 2020.12.29 |
Spring Cloud Gateway Actuator enabled 방법 (0) | 2020.12.15 |
JAR 파일 구조 (0) | 2020.12.03 |
SpringBoot SpringCloudGateway 초기세팅 (0) | 2020.11.24 |