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

 

 

 

 

 

๐Ÿ“”Scheduled ๋„ˆ๋ž€ ๋…€์„

Scheduled ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค๋ฉด, ํ•œ ๋ฒˆ์ฏค์€ ๊ฒช์–ด๊ฐ€๋Š” ์ฝ”์Šค๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

ํŠนํžˆ๋‚˜ ์ด๋ฒˆ์— Logback ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ ํ•˜๋ฉฐ, Spring ์Šค์ผ€์ค„๋Ÿฌ์—์„œ ๋กœ๊ทธ๊ฐ€ ๋‘ ๋ฒˆ์”ฉ ์ฐํžˆ๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์•„์ฐจ ์‹ถ์—ˆ๋‹ค.

๐Ÿ“„์›์ธ?

๐Ÿ“์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์ค‘๋ณต์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์›์ธ์€ ๋‹ค์–‘ํ•˜๊ฒŒ ์žˆ์ง€๋งŒ, Spring์—์„œ๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ Bean ์ƒ์„ฑ์ด ๋  ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค.

Bean์€ ์ˆœ์ฐจ์ ์œผ๋กœ @Configuration ์–ด๋…ธํ…Œ์ด์…˜์ด ์„ค์ •๋œ config Class ๋ฅผ ์ฝ์œผ๋ฉฐ ์ด์™€ ๊ด€๋ จ๋œ ์„ค์ • ํŒŒ์ผ(properties)๋“ค์„ ํ•จ๊ป˜ ๋ถˆ๋Ÿฌ์˜ค๋ฉฐ Bean์„ ๋“ฑ๋กํ•˜๊ฒŒ ๋˜๋Š”๋ฐ(Create๊ฐ€ ์•„๋‹ˆ๋ผ Register์˜ ๊ฐœ๋…์ด๋‹ค.) Context์—์„œ ์Šค์ผ€์ค„๋Ÿฌ Bean ์„ ๋“ฑ๋กํ•˜๊ฒŒ๋˜๊ณ , @Component ๋“ฑ์˜ ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์ธํ•ด scan์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ Bean ์„ ๋“ฑ๋กํ•˜๋‹ˆ ๋‘ ๋ฒˆ ์„ ์–ธ์ด ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ๊ฐ€!

 

๊ฐ™์€ ๋งฅ๋ฝ์œผ๋กœ logback ๊ณผ ๊ฐ™์ด Spring์—์„œ ๊ณต์‹ ์ง€์›ํ•˜๋Š” ์ถ”๊ฐ€์ ์ธ ๋ชจ๋“ˆ์„ ๋“ฑ๋กํ•˜๋Š” ๊ฒฝ์šฐ์—๋„, Auto Scan ์„ ํ•œ๋‹ค.

(ํŽธ์˜์„ฑ์—๋Š” ๋Š˜ ๋Œ€๊ฐ€๊ฐ€ ๋”ฐ๋ฅด์ง€..)

 

Tomcat ์ด๋‚˜ WebLogic ๊ณผ ๊ฐ™์€ WAS์—์„œ๋Š” ๋ญ.. ๋งํ•  ๊ฒƒ๋„ ์—†์ง€ ์•Š๊ฒ ๋Š”๊ฐ€ ใ… ใ…กใ… 

 

์•„์ฐธ! ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ํด๋ž˜์Šค(๋นˆ ๋“ฑ๋กํ•  ์ปดํฌ๋„ŒํŠธ)๋ฅผ ์ค‘๋ณต์œผ๋กœ ๋“ฑ๋กํ•  ์ผ์€ ์—†์ง€๋งŒ.. ๋ฌด์‹ฌ์ฝ” ๋ณต๋ถ™ํ•œ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด? ConflictingBeanDefinitionException  ๊ฐ€ ๋ฐœ์ƒํ•˜๋‹ˆ ์ฃผ์˜ํ•˜๋„๋ก!!


๐Ÿ“„ํ•ด๊ฒฐ(Solution)

๐Ÿ“Logback-spring.xml

์ผ๋‹จ ์ด ๊ธ€์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋œ ์›์ธ์ธ ๋ถ€๋ถ„์€ ๋ช…ํ™•ํ•˜๊ฒŒ ํŒŒ์•…ํ–ˆ๋‹ค. (์˜ค๋ฅ˜๊ฐ€ ์•„๋‹Œ ๊ฒƒ์ด๊ธฐ์— ๋ช…ํ™•ํ•œ ์›์ธ์€ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•ด์•ผํ•œ๋‹ค.)

"logback-spring.xml" ์—์„œ๋Š”  "logger" ๋ฅผ ์ •์˜ํ•˜๊ฒŒ ๋˜์–ด์žˆ๋‹ค.

 

logger๋Š” org.springframework(logger)์™€ root(ํ”„๋กœ์ ํŠธ) ๊ฐ€ ๊ฐ™์€ appender๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋ณต์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค!!

์•„๋ž˜ ์˜ˆ์ œ๋ฅผ ๋ณด๋ฉด logger์— ํ”„๋กœ์ ํŠธ ํŒจํ‚ค์ง€ ์ž์ฒด๋ฅผ ์ฃผ์ž…ํ•˜์˜€์œผ๋ฏ€๋กœ.. ์‚ฌ์‹ค ์ƒ root์™€ ๊ฐ™๋‹ค.

"logback-spring.xml"

    <!-- ์˜ˆ์ œ -->
    <!-- ๊ธฐ๋ณธ ๋กœ๊ทธ ์„ค์ • -->
    <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>

 

๋‹คํ–‰ํžˆ logback ์—์„œ๋Š” ์˜ต์…˜์ฒ˜๋ฆฌ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.  additivity="false"

    <!-- ์˜ˆ์ œ -->
    <!-- ๊ธฐ๋ณธ ๋กœ๊ทธ ์„ค์ • -->
    <root level="${LOG_ROOT_LEVEL}">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE" />
    </root>
    <!-- ํ”„๋กœ์ ํŠธ ๋กœ๊ทธ ์„ค์ •-->
    <logger name="kr.co.ooweat.springBatchApi" level="${LOG_ROOT_LEVEL}" additivity="false">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE" />
    </logger>

๐Ÿ“š์ถ”๊ฐ€ํ•  ๋‚ด์šฉ

๊ฐ™์€ ์ค‘๋ณต๋˜๋Š” ์›์ธ์ด ๋ฐœ๊ฒฌ๋  ๋•Œ๋งˆ๋‹ค ๋ฐ”๋กœ ์—ฌ๊ธฐ์— ์ถ”๊ฐ€ ์ž‘์„ฑํ•˜๋„๋ก ํ•ด์•ผ๊ฒ ๋‹ค.

 

 

 

๋ฐ˜์‘ํ˜•
profile

๐Ÿ‘จ‍๐Ÿ’ป kimtongting

@kimtongting ์ž…๋‹ˆ๋‹ค

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