CodeGym/Java Course/๋ชจ๋“ˆ 3/๋กœ๊น… ์ˆ˜์ค€ ์„ค์ •

๋กœ๊น… ์ˆ˜์ค€ ์„ค์ •

์‚ฌ์šฉ ๊ฐ€๋Šฅ

4.1 ๋กœ๊น… ์ˆ˜์ค€ ๋ชฉ๋ก

ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ณ  ์„œ๋ฒ„์— ์—…๋กœ๋“œํ•œ ๋‹ค์Œ ์ฆ‰์‹œ ์งˆ๋ฌธ์„ ํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

  • debug()์—์„œ ์ž‘์—…ํ•˜๋Š” ๋™์•ˆ ๋ฐฉ๋ฒ•์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ production?
  • ๋กœ๊ทธ์— ๋„ˆ๋ฌด ๋งŽ์€ ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋งŒ ๋‚จ๊ธฐ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋กœ๊ทธ๋ฅผ ๋ณด๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ฌผ๋ก  ๋กœ๊ทธ๋ฅผ ๋งŒ๋“  ์‚ฌ๋žŒ๋“ค์€ ์ˆ˜์‹ญ ๋…„ ์ „์—๋„ ๋˜‘๊ฐ™์€ ์ผ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๊ฐ€ C์–ธ์–ด์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐ๋˜์—ˆ๋Š”์ง€๋Š” ๋งํ•˜์ง€ ์•Š๊ฒ ์ง€๋งŒ ์ž๋ฐ”์–ธ์–ด์—์„œ๋Š” ์•„์ฃผ ์•„๋ฆ„๋‹ต๊ฒŒ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋กœ๊ทธ๋Š” ์— ์ •๋ณด๋ฅผ ์“ฐ๊ธฐ ์ „์— ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค . ๋กœ๊น… ์ˆ˜์ค€์„ ์„ค์ •ํ•˜์—ฌ ๋กœ๊ทธ์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ค„์ด๊ฑฐ๋‚˜ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ˆ˜์ค€์€ ์•„๋ž˜ ํ‘œ์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜์ค€ ๋ฉ”๋ชจ
1 ๋ชจ๋‘ ๋ชจ๋“  ๋ฉ”์‹œ์ง€ ๊ธฐ๋ก
2 ์ถ”์ ํ•˜๋‹ค ๋””๋ฒ„๊น… ์‹œ ์ž‘์€ ๋ฉ”์‹œ์ง€
์‚ผ ๋””๋ฒ„๊ทธ ๋””๋ฒ„๊น…์— ์ค‘์š”ํ•œ ๋ฉ”์‹œ์ง€
4 ์ •๋ณด ๊ฐ„๋‹จํ•œ ๋ฉ”์‹œ์ง€
5 ๊ฒฝ๊ณ ํ•˜๋‹ค ์น˜๋ช…์ , ์˜ค๋ฅ˜ ๋ฐ ๊ฒฝ๊ณ ๋งŒ ์ž‘์„ฑ
6 ์˜ค๋ฅ˜ ์˜ค๋ฅ˜ ๋ฐ ์น˜๋ช…์  ์˜ค๋ฅ˜๋งŒ ์“ฐ๊ธฐ
7 ์น˜๋ช…์ ์ธ ์น˜๋ช…์  ์˜ค๋ฅ˜๋งŒ ์ž‘์„ฑ
8 ๋„๋‹ค ๋กœ๊ทธ์— ๋ฉ”์‹œ์ง€๋ฅผ ์“ฐ์ง€ ์•Š์Œ

์ด๋Ÿฌํ•œ ์ˆ˜์ค€์€ ๋ฉ”์‹œ์ง€๋ฅผ ํ•„ํ„ฐ๋งํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋กœ๊น… ์ˆ˜์ค€์„ ๋กœ ์„ค์ •ํ•˜๋ฉด WARN๋‹ค์Œ๋ณด๋‹ค ๋œ ์ค‘์š”ํ•œ ๋ชจ๋“  ๋ฉ”์‹œ์ง€๊ฐ€ WARN์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค: TRACE, DEBUG, INFO. ํ•„ํ„ฐ๋ง ์ˆ˜์ค€์„ ๋กœ ์„ค์ • FATALํ•˜๋ฉด ERROR.

OFFํ•„ํ„ฐ๋ง์— ์‚ฌ์šฉ๋˜๋Š” ์‹ฌ๊ฐ๋„ ์ˆ˜์ค€์—๋Š” ์ด (๋ชจ๋“  ๋ฉ”์‹œ์ง€ ์‚ญ์ œ) ๋ฐ ๋ชจ๋“  ๋ฉ”์‹œ์ง€ ์“ฐ๊ธฐ(์•„๋ฌด๊ฒƒ๋„ ์‚ญ์ œ) ์˜ ๋‘ ๊ฐ€์ง€ ์‹ฌ๊ฐ๋„ ์ˆ˜์ค€์ด ๋” ์žˆ์Šต๋‹ˆ๋‹ค ALL.

4.2 ๋กœ๊ทธ ์„ค์ • ์˜ˆ์‹œ

๊ฐ„๋‹จํ•œ ๋กœ๊ทธ ์„ค์ • ์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ์ž์› ํด๋”์— ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๋Š” log4j.properties ํŒŒ์ผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฝ˜ํ…์ธ ๋ฅผ ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

# Root logger option
log4j.rootLogger=WARN, stdout

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}

์—ฌ๊ธฐ ์ฒซ ๋ฒˆ์งธ ์ค„์—์„œ ๋กœ๊น… ์ˆ˜์ค€์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค - WARN. ์ด๋Š” ์ƒํƒœ์™€ ํ•จ๊ป˜ ๋กœ๊ฑฐ์— ๊ธฐ๋ก๋œ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฌด์‹œ DEBUG๋จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค INFO.

  • ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•  ์–ดํŽœ๋” ์œ ํ˜• ์ง€์ • -ConsoleAppender
  • ๋กœ๊ทธ๋ฅผ ์ž‘์„ฑํ•  ์œ„์น˜ ์ง€์ • -System.out
  • ๋…น์Œ ํ˜•์‹์„ ์ œ์–ดํ•  ํด๋ž˜์Šค๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.PatternLayout
  • ๋ชจ๋“  ๋ฉ”์‹œ์ง€์˜ ๋…น์Œ ํ˜•์‹ ์„ค์ • - ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„

4.3 ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋กœ๊น… ์‹ค์ˆ˜

๊ทธ๋ฆฌ๊ณ  ํ•œ ๊ฐ€์ง€ ๋” ์ค‘์š”ํ•œ ์ ์€ ๋กœ๊น…์—์„œ ํ”ํžˆ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์€ ๊ทธ๋ฆฌ ๋งŽ์ง€ ์•Š์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ์‹ค์ˆ˜๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋„ˆ๋ฌด ๋งŽ์€ ๋กœ๊น… . ์ด๋ก ์ ์œผ๋กœ ์ค‘์š”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ๊ธฐ๋กํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๊ทœ์น™์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ๋Š” ์„ฑ๋Šฅ์„ 10% ์ดํ•˜๋กœ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค . ์ด๋กœ ์ธํ•ด ํŠน์ • ์‹œ์Šคํ…œ์— ํŒŒ์ผ ํฌ๊ธฐ ์ œํ•œ์ด ์žˆ๋Š” ๊ฒƒ์€ ๋งํ•  ๊ฒƒ๋„ ์—†๊ณ  ์–ด๋Š ์‹œ์ ์—์„œ ์ฝ๊ธฐ/์“ฐ๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.
  3. ์ž˜๋ชป๋œ ๋กœ๊น… ์ˆ˜์ค€ ์‚ฌ์šฉ . ๊ฐ ๋กœ๊น… ์ˆ˜์ค€์—๋Š” ๋ช…ํ™•ํ•œ ๊ฒฝ๊ณ„๊ฐ€ ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ์ค€์ˆ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๊ณ„๊ฐ€ ๋ชจํ˜ธํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•  ์ˆ˜์ค€์— ๋™์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฝ”๋ฉ˜ํŠธ
  • ์ธ๊ธฐ
  • ์‹ ๊ทœ
  • ์ด์ „
์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‚จ๊ธฐ๋ ค๋ฉด ๋กœ๊ทธ์ธ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
์ด ํŽ˜์ด์ง€์—๋Š” ์•„์ง ์ฝ”๋ฉ˜ํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค