์นํ ๋ฌธ์(?) ์ง๋ฌธ ๋๋ฆฝ๋๋ค!
์๋
ํ์ธ์! ์ง๋ฌธํ์ ๋ด์ฉ ์ฝ๊ณ ์ ๋ ๊ถ๊ธํด์ ์กฐ๊ธ ์ฐพ์๋ดค๋๋ฐ์ ์๋ฒฝํ ๋ต๋ณ์ ์๋์ง๋ง ๋์์ด ๋์ค๊น ์ถ์ด ๊ธ์ ๋จ๊ฒจ ๋ด
๋๋ค. 1. ๋ก๊ฑฐ์ ๋์ ์๋ฆฌ org.slf4j.helpers๋ผ๋ ํจํค์ง์ ๋ณด์๋ฉด MessageFormatter๋ผ๋ ํด๋์ค๊ฐ ์๋๋ฐ, ๊ทธ ์ค arrayFormat์ด๋ผ๋ ๋ฉ์๋๋ฅผ ๋ด๋ณด์ธ์.๋ก๊น
ํ ๋ฌธ๊ตฌ๋ฅผ ์์ฑํ ๋ ๋ด๋ถ์ ์ผ๋ก StringBuilder๋ฅผ ์ฐ๊ณ ์์์ ์ ์ ์์ต๋๋ค. log.error("test: {}, {}", 1, 2); ์์ ์ฝ๋๋ฅผ ์์๋ก ๋ค์๋ฉด, ๊ฐ๋ฐ์๊ฐ ์ ์ ๋ฉ์ธ์ง ํฌ๋งท("test: {}, {}")์์ "{}"๊ฐ ์ ์ธ๋ ์์น๋ฅผ ์ฐพ์ ํ๋ผ๋ฏธํฐ(1๊ณผ 2)๋ก ์นํํด์ฃผ๋ ์์ผ๋ก ๋์ํ๋ ๋ฏ ํฉ๋๋ค. ํ์ ์ง์ ์๋ฅผ ๋ฐ๋ก ์ฌ์ฉํ์ง ์์๋ ๋ก๊ฑฐ ๋ฌธ๊ตฌ๊ฐ ์์์ ์ ์์ฑ๋๋ ์ด์ ๋ toString()๋ฉ์๋๋ฅผ ์ด์ฉํด ๋ชจ๋ ํ๋ผ๋ฏธํฐ๋ฅผ String ํ์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ธฐ ๋๋ฌธ์
๋๋ค. (MessageFormatter.safeObjectAppend ์ฐธ๊ณ !) ํ๋ผ๋ฏธํฐ์ String ํ์
์ด ์๋ Map์ด๋ ๋ค๋ฅธ ๊ฐ์ฒด๊ฐ ๋ค์ด์๋ ์๋ฌ๊ฐ ๋์ง ์๋ ์ด์ ๋ ๋ชจ๋ Object๋ toString() ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ด์ฃ ์ด์ธ์ logback์ ๊ฒฝ์ฐ logback.xml์ ์ง์ ํ๋ %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n ์ด๋ฐ ํจํด์ด ์ด๋ป๊ฒ ์ ์ฉ๋๋์ง ๊ถ๊ธํ๋ค๋ฉดpackage ch.qos.logback.classic ์๋์ ์๋ PatternLayout ํด๋์ค๋ฅผ ์ดํด๋ณด์๋ฉด ์ข์ ๊ฒ ๊ฐ๊ณ ์! 2. errors.properties์ ์ค๋ฅ ๋ฉ์์ง ๋์ ์๋ฆฌ totalPriceMin=๊ฐ๊ฒฉ * ์๋์ ํฉ์ {0}์ ์ด์์ด์ด์ผ ํฉ๋๋ค. ํ์ฌ ๊ฐ = {1} ์ด๋ฐ ๋ด์ฉ์ errors.properties ํ์ผ์ ๋ฃ์์ ๋ {0}๊ณผ {1}์ ์ด๋ป๊ฒ ๊ฐ์ด ๋ค์ด๊ฐ๋์ง ๊ถ๊ธํ์๋ค๋ฉด์คํ๋ง ํ๋ ์์ํฌ์ MessageSourceSupport ํด๋์ค์ java.text ์๋์ ์๋ MessageFormat ํด๋์ค๋ฅผ ์ฐธ๊ณ ํด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค ๋๋ฒ๊น
๋๊ตฌ๋ฅผ ์ธ ์ค ์์๋ฉด ๊ณต๋ถ์ ๋ง์ ๋์์ด ๋์ค ๊ฑฐ์์๋๋ถ์ ์ ๋ ๊ณต๋ถ๋ฅผ ํ๊ฒ ๋์๋ค์~ ์ฌ๋ฐ๋ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค :)