๐Ÿ‘จ‍๐Ÿ’ป kimtongting
article thumbnail

 

 

 

Spring With LogBack

๐Ÿ“”Springboot ์— Logback ์ ์šฉํ•˜๊ธฐ

๐Ÿ“„์‹œ์ž‘ ๊ณ„๊ธฐ?

์šฐ๋ฆฌ ํŒ€ ์—…๋ฌด์˜ ํŽธ์˜์„ฑ์„ ์œ„ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ์ ์‹ฌ ์‹œ๊ฐ„์— ๊ฐ€๋ณ๊ฒŒ ๋งŒ๋“  ํ”„๋กœ์ ํŠธ(๋“ฑ๋ก ์ž๋ฃŒ ์ž๋™ ๊ฒ€์ˆ˜, ์šด์˜ ํ”„๋กœ์„ธ์Šค ์ด์ƒ ์œ ๋ฌด ์ฒดํฌ, RM ๋ฐœ์†ก ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ํƒ‘์žฌํ•œ ์ž๋™ ๋ฐฐ์น˜ ์‹œ์Šคํ…œ)๋ฅผ ํŒ€์—์„œ ๊ฒฉํ•˜๊ฒŒ ํ™˜์˜ํ•ด์ฃผ์–ด ๊ฐœ๋ฐœ๊ณ„์—์„œ ์Šคํ…Œ์ด์ง•์œผ๋กœ ์˜ฎ๊ธฐ๊ธฐ๋กœ ํ–ˆ๋‹ค ใ…Žใ…Ž

 

๋ฐฐ์น˜ ํ”„๋กœ์„ธ์Šค์ด๋‹ค ๋ณด๋‹ˆ Scheduled ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ํ”„๋กœ์ ํŠธ๋‹ค.

Linux OS ์—์„œ jar๋กœ ๊ฐ€๋ณ๊ฒŒ ๊ตฌ๋™ํ•  ๊ณ„ํš์ด์—ˆ๊ณ , ๊ธฐ์กด์—๋Š” Tomcat์— war๋กœ ๋นŒ๋“œํ•ด์„œ lombok์˜ ๋กœ๊ทธ๋ฅผ ์ฐ์—ˆ์—ˆ๋‹ค.

์ด์ œ๋Š” ๋ณ„๋„ Log ํŒŒ์ผ๋กœ ๊ด€๋ฆฌํ•  ์˜ˆ์ • ์ด๊ธฐ์— ๋กœ๊ทธ ๊ฒฝ๋กœ๋Š” ๋”ฐ๋กœ ์žก์•„์ฃผ์–ด์•ผ ํ–ˆ๋‹ค.

 

๐Ÿ“logback-spring.xml

๊ฐ์‚ฌํ•˜๊ฒŒ๋„ SpringBoot ์—์„œ๋Š” ํŒŒ์ผ ๋ช…์นญ๋งŒ์œผ๋กœ ์ž๋™์œผ๋กœ ์ธ์‹ํ•ด์ฃผ๋Š” ํŽธ์˜์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.

๊ทธ ์ด๋ฆ„ํ•˜์—ฌ.. "logback-spring.xml "

 

๐Ÿ‘จ‍๐Ÿ’ป๐Ÿ’ปโŒจxml ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<!-- properties ๋กœ ๋ชจ๋“  ์„ค์ •์„ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ์–ด์„œ ๋ณ„๋„๋กœ property์— ์ถ”๊ฐ€ํ–ˆ๋‹ค.
    ํŠนํžˆ๋‚˜ Log์˜ Level์„ ์„ค์ •ํ•  ๋•Œ, properties ์ˆ˜์ •๋งŒ์œผ๋กœ ์ง„ํ–‰ํ•˜๊ณ  ์‹ถ์—ˆ๋˜๊ฒŒ ํฌ๋‹ค.
    -->
    <property resource="application.properties"/>
    <!-- properties์— ์žˆ๋Š” ๊ฐ’์„ ๋”ฐ๋กœ ๋งตํ•‘ํ•ด์ฃผ๊ณ  ์‹ถ์—ˆ๋‹ค..-->
    <property name="LOG_ROOT_LEVEL" value="${logging.root.level}"/>
    <property name="LOG_FILE_PATH" value="${logging.file.path}"/>
    <property name="LOG_FILE_NAME" value="${logging.file.name}"/>

	<!-- ์ฆ๊ฒจ์“ฐ๋Š” ๋กœ๊ทธ ํฌ๋งท์ธ๋ฐ, ์–ด๋Š์ƒˆ ํŒ€์—์„œ๋„ ์•„๋ž˜ ํฌ๋งท์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>[%d{HH:mm:ss}] [%-5level] %logger{36}[line: %L] - %msg%n</Pattern>
        </layout>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logging.file.path}/springBatchApi.log</file>
        <encoder>
            <Pattern>[%d{HH:mm:ss}] [%-5level] %logger{36}[line: %L] - %msg%n</Pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_FILE_PATH}/${LOG_FILE_NAME}</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- ํŒŒ์ผ ์‚ฌ์ด์ฆˆ๋Š” 5MB๋ฅผ ๋„˜๊ธฐ์ง€ ์•Š๋„๋ก ํ•ด์„œ ์šฉ๋Ÿ‰์„ ํฌ๊ฒŒ ์ฐจ์ง€ํ•˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค. 
                ๋ถ€๊ฐ€์„œ๋น„์Šค์ธ ๋งŒํผ ๋กœ๊ทธ๋Š” ์ตœ๋Œ€ํ•œ ํ•„์ˆ˜์ ์ธ ๋‚ด์šฉ๋งŒ ๋‹ด๊ณ , ํ•„์š”์—†๋Š” ๋ถ€๋ถ„์€ ๊ณผ๊ฐํ•˜๊ฒŒ ์ƒ๋žตํ–ˆ๋‹ค.
                -->                
                <maxFileSize>5MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!-- ํ•œ ๋‹ฌ ์ฃผ๊ธฐ์˜ ์ตœ๋Œ€์น˜์ธ 31-->
            <maxHistory>31</maxHistory>
        </rollingPolicy>
    </appender>

    <root level="${LOG_ROOT_LEVEL}">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE" />
    </root>
    <logger name="kr.co.ooweat.springBatchApi" level="${LOG_ROOT_LEVEL}">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE" />
    </logger>

</configuration>

๐Ÿ“application.properties

์–ด๋Š์ •๋„ ๊ตฌ์ƒ‰์€ ๊ฐ–์ถ”๋Š”๊ฒŒ ์ข‹๊ฒ ๋‹ค.

#Logging ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋”ฐ๋กœ ๋“ฑ๋กํ•ด์ฃผ์—ˆ๋‹ค.

"application.properties"

 

๐Ÿ‘จ‍๐Ÿ’ป๐Ÿ’ปโŒจproperties ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

server.port=17882
#Logging
logging.root.level=INFO
logging.file.path=/app/service/springBatchApi/logs
logging.file.name=springBatchApi_%d{yyyy-MM-dd}_%i.log

#Use Flag
smtp.use.flag=y
kakao.use.flag=y

#Schedule
batch.morning.crond=0 40 7-9/1 * * ?
batch.halfHours.crond=0 */30 9-18/1 * * ?
batch.hours.crond=0 0 */1 * * ?

๐Ÿ“š์ถ”๊ฐ€

๋ญ, ์ด ๊ธ€์„ ์ฐธ๊ณ ํ•˜๋Š” ์ด๊ฐ€ ํ”„๋กœ์ ํŠธ์—์„œ ๊ธฐ์กด์— lombok ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ Logger๋ฅผ ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค๋ฉด ๋”ฑํžˆ ์–ด๋ ค์šด ์ ์€ ์—†์„ ๊ฒƒ ๊ฐ™๋‹ค.

 

 

 

 

 

 

๋ฐ˜์‘ํ˜•
profile

๐Ÿ‘จ‍๐Ÿ’ป kimtongting

@kimtongting ์ž…๋‹ˆ๋‹ค

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!