๋ก๊ทธ์ ์ค์์ฑ
์ค๋ฌด์์๋ ๋ก๊ทธ ๊ด๋ฆฌ์ ๊ต์ฅํ ๋ง์ ๋ ธ๋ ฅ์ ์๋๋ค. ๋ฐฐํฌ ํ์ ๋ฐ์ํ๋ ์ฅ์ ๋ฅผ ๋ฐ๋ก ์ฒดํฌํ๊ธฐ ์ํด, ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์๋ค์๊ฒ๋ ๋ณด์ฌ์ฃผ์ง ์๋ ์๋ฌ๋ฅผ ์ค๋ฌด ๊ฐ๋ฐ์๋ค์ด ํ์ธ ํ ์กฐ์นํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ค.
๋ก๊น
๋ก๊ทธ ํ์ผ์ ๋จ๊ธฐ๊ธฐ ์ํด์ Logback ์ ์ฌ์ฉํ๊ณค ํ๋๋ฐ, ์ฐ์ @Slf4j
์ด๋
ธํ
์ด์
์ผ๋ก ํด๋์ค์ ๋ค์ง๊ณ ์ง ๋ถ์ด๋ ๊ฑด ๊ธฐ๋ณธ logger๋ฅผ ๋ฐ์์ค๊ณ , ๊ทธ logger์ ์ธํ
๋ ์ค์ ์ผ๋ก๋ง ๋์ํ๊ธฐ ๋๋ฌธ์ ์ ์ ํ๊ฒ Logger ๋ฅผ ๋๋์ด ๋ง๋ค์ด์ฃผ๋ ๊ฒ๋ ์ค์ํ ๋ฏ ์ถ๋ค.
https://cofs.tistory.com/354 ๋ฅผ ์ฐธ๊ณ ํด๋ณด๋ฉด, RollingFileAppender ๋ผ๋ ํด๋์ค์ ๋ํ ์ค๋ช ์ด ๊ฐ๋ตํ๊ฒ ๋์์๋ค. ์ด๋ ๋ก๊ทธ ํ์ผ์ด ๊ฝ ์ฐจ๋ฉด ๊ท์น์ ๋ฐ๋ผ ๋ค์ ๋ก๊ทธ ํ์ผ์ ์์ฑํด์ฃผ๋ ํด๋์ค์ธ๋ฐ, ์ง๋๊ฐ๋ฒ๋ฆฐ ๋ก๊ทธ๋ฅผ ์ง์๋ฒ๋ฆด ์๋ ์๋ ๋ ธ๋ฆ์ด๊ธฐ์ ์ด ํด๋์ค์ ํ์ผ ์ด๋ฆ ๊ท์น ๋ฑ์ ๋ฃ๋ ์์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ค. (ํ์ผ ํธ๋ฆฌ๋ฅผ ๋ณด๋ฉด ๋์ค๋ spring-logback.xml ์ฐธ๊ณ , ์๋ ๊ฒฝ์ฐ ๊ฒ์ํด์ ๋ณด์.)
์ถ๊ฐ๋ก ๋ก๊น ์ ์์ด์ ์ฌ์์๊ฒ ๋ค์๋ ์กฐ์ธ๋ ๊ธฐ์ต๋๋ค. log.debug(โxxxโ) ์ผ๋ก ๋ ๋ค ๋จ๊ฒจ๋ฒ๋ฆฌ๋ ๊ฒ ์๋๋ผ,
-
if(log.isDebugEnabled()) { ๋ก ๊ทธ ๋จ ๊ธฐ ๊ธฐ }
์ฒ๋ผ ํด๋น ๋ก๊ทธ ๋ ๋ฒจ์ด enable ๋์ด์๋ ์ง๋ฅผ ์ฒดํฌ ํ ๋ก๊ทธ๋ฅผ ๋จ๊ฒจ์ค๋ค. ์ด์ ๋ ๋ก๊ทธ level ์ด ํ์ฌ enable ๋์ด์์ง ์๋๋ผ๋, JVM ์ ์ฅ์์๋ ํด๋น ๋ก๊ทธ๋ฅผ ์ฐ๋ ๋ฐ์ ์ด๋ฏธ ์๋์ง๋ฅผ ์๋๋ค. (์๋์ง๋ฅผ ์๋๊ฒ ์๋๋ผโฆ ๋ญ๋๋ผโฆ ๊ธ ๋จ์ด๊ฐ ๊ธฐ์ต์ด ์๋จ. ๋ถํ๋ฅผ ์ฌ์ฉํ๋ค? ์ฐ์ฐ์ ๋ญ๋นํ๋ค?) ๊ทธ๋์ Enable ์ฌ๋ถ๋ฅผ ์ฒดํฌํ๊ณ ๋ก๊น ํด์ฃผ๋ ๊ฒ ๋๋ฌด๋๋ฌด ์ค์ํจ. (ํนํ TB์์๋ debug ๋จ๊ณ๊น์ง ๋ค ์ฐ๋๋ฐ, ์์ฉ์์ debug๊น์ง ๋ค ์ฐ์ผ๋ฉด ๋ถํ๋ก ์ธํด ์ฐ์ฐ์ด ๋๋ ค์ง๊ธฐ ๋๋ฌธ์ debug๋ skipํ๊ณ warn ์ฒ๋ผ ๊ฐ๋ ฅํ๊ณ ๋ฌด์์ด ๋๋ค๋ง ์ฐ์ด์ค๋ค.) -
log.warn("๋ฉ์ธ์ง", e)
์ด๋ ๊ฒ ๋์ exception ์ ๋จ๊ฒจ์ฃผ์ด ๋ํต ๋ฌด์จ ์ต์ ์ ์ด ์กํ ๊ฑด์ง๋ฅผ ๋จ๊ฒจ์ฃผ์ด์ผ ์ด๋์์ ์ฅ์ ๊ฐ ๋ฐ์ํ๊ฑด์ง ์์ธ์ ํ์ ํ ์ ์๋ค. ๊ทธ๋ฌ๋๊น ๊ผญ ๋งจ ๋์ e ๋ฅผ ๋ถ์ฌ์ ๋ฃ์ด์ฃผ๊ธฐ!
์์ ๊ฐ์ ์ค๋ฌด ํ์ ์ป์๋ ํฌ๋ฏธํ ๊ธฐ์ต์ด ๋๋ค.
์ผ๋ง์ ์๋ ์ง์ logback ํ์ผ์ ๋ง์ ธ๋ณด๊ธฐ๋ ํ๋๋ฐ, ๊ทธ ์ด์ ๋โฆ ํ์ฌ ๊ฐ๋ฐํ๋ ํ๋ก์ ํธ๊ฐ ์ผ์ข
์ ์ ์ฌ์ฉ ๋ฒ ์ด์งํ ํ
ํ๋ฆฟ ํ๋ก์ ํธ์ธ๋ฐ, ํ๋ ์์ํฌ์ฒ๋ผ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ ๋ค ๊ฐ์ถ ์ํ์์ ์ปค์คํ
ํ๋ ๋ถ๋ถ์ ๋น์ฆ๋์ค ๋ก์ง ๊ฐ๋ฐ์๊ฐ ๊ตฌํ์ฒด๋ก ๋ฐ์์์ ๋ง๋ค๊ฒ ๋์ด ์๋ค. ๊ทธ๋ฐ๋ฐ, ๋ก๊น
๋ ๋์ ํน์ ๊ท๊ฒฉ์ผ๋ก ๋ฐ๊พธ์ด์ ์ถ๋ ฅํ๋ LogConverter ๋ฅผ ๊ตฌํํด๋์ด์ผ ํ ํ์๊ฐ ์์๋ค. ์์์ฉ ๊ฒธ, ์ค์ ๋ก ์ฌ๋ด์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ก๊น
๊ท๊ฒฉ์ ๋ฃ์ด๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์. ์ด ๋๋ฌธ์ logger๋ฅผ ๋ถ๋ฆฌํ๊ณ , ๊ทธ logger๋ฅผ ํ๋ฉด ์์ ๋ณ๋ ํ์ผ ์ด๋ฆ์ผ๋ก ๋ก๊ทธ ํ์ผ์ด ์์ฑ๋๊ฒ ํด์ผ ํ์.
์ด์ ๋ฐ๋ผ์ logback spring xml ์์ ๊ทธ ๋ก๊ฑฐ์ ๋ํ RollingFileAppender ์ค์ ์ ๋ฃ์ด์ฃผ๊ณ , ํน์ ๋ก๊ทธ ํ์ผ์์๋ง ํด๋น ๊ท๊ฒฉ์ ๋ก๊ทธ๊ฐ ์ญ์ญ ์ฐํ๊ฒ ๋ฃ์ด์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํด๋ด.
๋ ๊ธ ์๊ฐ๋๊ฑฐ๋ ์ด๋ฒ์ ๋ก๊น
๊ธฐ๋ฅ์ ๊ตฌํํ ๊ฒ ๊ต์ฅํ ์ฌ๋ฏธ์์๋๋ฐโฆ ๊ทธ๊ฑด ๋ฐ๋ก Spring Filter๋ฅผ ์ฒจ์ผ๋ก ์ฌ์ฉํด๋ณด์๊ธฐ ๋๋ฌธ์. Filter์ Interceptor ์ ๊ฐ์ฅ ํฐ ์ฐจ์ด๋?
๋ฐ๋ก๋ฐ๋ก Filter๋ ์คํ๋ง์ ๊ด๋ฆฌ ๋ฐ, servlet ์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ด๊ณ Interceptor๋ ์คํ๋ง์ ๊ด๋ฆฌ ์์ ์๊ธฐ ๋๋ฌธ์. ๊ทธ๋ ๋ค๋ฉด ์ Filter๋ฅผ ์ผ๋๊ฐ? ์คํ๋ง ๋์์์, url ์ด ๋ค์ด์ค๋ฉด ๊ทธ url ์ ๊ฐ๋ ์ปจํธ๋กค๋ฌ๋ก ๋งคํํด์ค๋ค. ๊ทผ๋ฐ ๋ด๊ฐ ๋ง๋ค์ด์ผ ํ๋ ๋ก๊น
๊ธฐ๋ฅ์ ์ปจํธ๋กค๋ฌ๋ก ๋งคํ์ด ๋์ง ์๋๋ผ๋
์ฐ์ e2e ๋ก ์์ฒญ์ด ๋ค์ด์ค๋ฉด ๋ด๊ฐ ๊ทธ ๋์ ์ก์๋ค๊ฐ ๋ก๊ทธ ์ ๋ณด๋ฅผ ๋ง๋ค๊ธฐ ์์ํด์ผ ํ๊ณ , ์ด๋ค ์ปจํธ๋กค๋ฌ๋ก ๋งคํ์ด ๋์๋ ์ง๋ ๋ฃ์ด์ฃผ์ด์ผ ํด์ Filter๋ฅผ ์ฌ์ฉํ๋ค.
ํ โฆ ๊ธ๊ณ Masking ์ด๋ ธํ ์ด์ ์ ๋ง๋๋ ๊ฐ๋ฐ๋ ํ๋๋ฐ, ์ด๋๋ ๊ต์ฅํ ํฅ๋ฏธ๋ก์ ์ง๋ง ์ถํ ์์ ํ๋๋ก ํ๊ฒ ๋ค. ์ํผ ์์ฆ์ ์ด๋ฐ ์ ๋ฐ ์ ๊ท๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๊ณ ์๋ค. ์ด๋ ๊ฒ ์ฐ์ฐจ๊ฐ ๋ณ์๋ฆฌ์ธ ๋ด๊ฐ ๊ณผ์ฐ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํด๋ ๋๋๊ฐ? ์ถ๊ธด ํ๋ฐโฆ ๋ญ ์ด์ฉ๊ฑด์ง? ์ฅ์ ๋์ง ์๊ฒ ์ฃผ์๋ ํ๋ ์ฅ์ ๊ฐ ๋๋๋ผ๋ ์์ตํ๋ฉด์ ์ข์ ๊ฒฝํ์ด ๋ ํ ๋ ์ด๋ป๊ฒ๋ ๋์ง ์์๊น?