고똘이의 IT 개발이야기

프로젝트를 진행하다가 보면 시스템 로그가 아닌 로그 파일을 일자별로 보관하여 현업들에게 증빙용과 시스템 운영도중 에러가 발생 하였을 경우에도 좀더 쉽게 검출 할 수 있습니다.

 

그리하여 오늘은 스프링부트에서 로그 설정 하는 방법에 대해서 설명 드리겠습니다.

 

소스 설명

1. 현재 프로젝트는 스프링부트 기반이며 gradle를 사용하고 있습니다. 아래의 이미지는 logback설정 파일 위치와 properties 위치를 나타낸 것입니다.

이미지 참조.

 

2. application.properties에 서버 시작 시 참조할 profiles를 설정 합니다.

 소스 참조.

 

3. application-local.properties 파일 설정 소스입니다. 스프링 프로필은 위에서 설정한 'local'이며 소스를

보시면 로그파일 위치와 로그파일 이름을 설정 하였습니다.

 소스 참조.

1
2
3
4
5
6
7
8
# local
spring.profiles=local
 
# 로그 파일 위치
profiles.active.log.path=/home/test/project
 
# 로그 파일 
testNm=testLog

 

 

4. logback.xml 설정 파일 입니다. 아래에 보시면 application-local.properties의 resource를 사용하여 설정된 소스입니다. 추후 dev, prod등의 properties파일을 추가 하셔도 됩니다. 

 소스 참조.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property resource="application.properties"/>
    <property resource="application-${spring.profiles.active}.properties"/>
    
    <!--로그 파일 저장 위치-->
    <property name="LOG_FILE" value="${profiles.active.log.path}"/>
    
    <!-- 로그 파일 이름 -->
    <property name="LOG_FILE_NAME" value="${testNm}"/>
    
    <!-- 콘솔 로그 일자패턴 -->
    <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
 
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!-- 로그 출력 패턴 지정 -->
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    
    <!-- 로컬 로그 -->
    <springProfile name="local">
        <appender name="ROLLING-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_FILE}${LOG_FILE_NAME}.log</file>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>${FILE_LOG_PATTERN}</pattern>
            </encoder>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${LOG_FILE}${LOG_FILE_NAME}_%d{yyyy-MM-dd}.log</fileNamePattern>
                <!-- 로그 파일 보관일자 -->
                <maxHistory>90</maxHistory>
                <!-- 로그 최대 사이즈 -->
                <totalSizeCap>20GB</totalSizeCap>
            </rollingPolicy>
        </appender>
 
        <logger name="me.logback" level="info" additivity="false">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="ROLLING-FILE"/>
        </logger>
        <root level="info">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="ROLLING-FILE"/>
        </root>
    </springProfile>
</configuration>
 

소스 설명.

2번 줄 : logback설정에서 사용할 resource 설정 파일을 명시합니다.

3번 줄 : logback설정에서 사용할 resource 설정 파일을 명시합니다.

7번 줄 : application-local.properties에서 명시한 로그파일 경로 입니다.

10번줄 : application-local.properties에서 명시한 로그파일 이름 입니다.

13번 줄 : 로그가 console에 찍힐때 ex)2020-04-01 00:00:00 000 형식으로 찍히도록 명시합니다.

23번 줄 : 스프링의 profile중 local profile일때 설정된 방식이다라는 명시입니다.

25번 줄 : profile에 설정에 경로/파일이름.log 형식으로 로그 파일이 남겨진다라는 설정 입니다.

32번 줄 : 로그파일의 보관일 설정입니다.

34번 줄 : 최대 로그파일 보관 사이즈를 설정한 것입니다.

 

톰캣 구동후 이미지.

 

5. 만약에 에러가 발생한다면 로그파일을 쌓을 경로가 생성되었는지 확인을 하신 다음에 만약 경로가 생성이 되어있지 않다면 경로를 생성 해주시면 됩니다.

 

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band