본문 바로가기

Spring

SpringBoot logback 설정

728x90
반응형

SpringBoot에서는 기본적으로 Commonslogging에 대한 구현가능성은 열어두고 있다.

내부적으로 slf4j를 지원한다.

 

 

jar console 출력시 옵션 주는 방법

java -jar ***.jar --debug

--debug와같은 형태로 옵션을 주면 된다.

 

로그 레벨은 다섯단계로 나뉘어진다.

  1. trace
  2. debug
  3. info
  4. warn
  5. 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 설정

github.com/spring-projects/spring-boot/blob/v2.4.0/spring-boot-project/spring-boot/src/main/resources/org/springframework/boot/logging/logback/defaults.xml

 

spring-projects/spring-boot

Spring Boot. Contribute to spring-projects/spring-boot development by creating an account on GitHub.

github.com

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" />
728x90
반응형

'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