Skip to content

Latest commit

ย 

History

History
148 lines (91 loc) ยท 8.56 KB

Logging.md

File metadata and controls

148 lines (91 loc) ยท 8.56 KB

logging

์‹œ์Šคํ…œ์„ ์ž‘๋™ํ•  ๋•Œ ์‹œ์Šคํ…œ์˜ ์ž‘๋™ ์ƒํƒœ์˜ ๊ธฐ๋ก๊ณผ ๋ณด์กด, ์ด์šฉ์ž์˜ ์Šต์„ฑ ์กฐ์‚ฌ ๋ฐ ์‹œ์Šคํ…œ ๋™์ž‘์˜ ๋ถ„์„ ๋“ฑ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ž‘๋™์ค‘์˜ ๊ฐ์ข… ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•ด๋‘˜ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์ด ๊ธฐ๋ก์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋กœ๊น…์ด๋ผ ํ•œ๋‹ค. ์ฆ‰ ๋กœ๊ทธ ์‹œ์Šคํ…œ์˜ ์‚ฌ์šฉ์— ๊ด€๊ณ„๋œ ์ผ๋ จ์˜ ์‚ฌ๊ฑด๋“ค์„ ์‹œ๊ฐ„์˜ ๊ฒฝ๊ณผ์— ๋”ฐ๋ผ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋กœ๊น…์€ ์™œ ํ•„์š”ํ• ๊นŒ?

  1. ๊ฐœ๋ฐœ ํ•  ๋•Œ, ๋””๋ฒ„๊น… ์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ์‚ฌ์šฉ์ž์˜ ์ด๋ฒคํŠธ๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋‹ค.

System.out.println ์œผ๋กœ ๋กœ๊น…์„ ํ•˜๋ฉด ์•ˆ๋˜๋Š” ์ด์œ 

  • ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œํ•œ์˜ ์ •๋ณด(๋‚ ์งœ, ์‹œ๊ฐ„, ํŠน์ • ํด๋ž˜์Šค, ๋กœ๊ทธ ํƒ€์ž…(error, info, warn, debug ๋“ฑ))๊ฐ€ ์—†๋‹ค.
  • ์ถœ๋ ฅ๋œ ๋กœ๊ทธ ๋‚ด์šฉ์„ ์„œ๋ฒ„๋กœ ์ „์†กํ•  ์ˆ˜ ์—†๋‹ค.
  • ๋กœ๊ทธ ํ•„ํ„ฐ๋ง์„ ํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค. ํŠน์ • ๋กœ๊ทธ ์ˆ˜์ค€์— ์†ํ•˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ๋“ค์ด ์—†๋‹ค.
  • ์Šค๋ ˆ๋“œ์— ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค.
  • println์€ ๋งค ์‹คํ–‰์‹œ๋งˆ๋‹ค ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜๊ณ , IO ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” Blocking ๋ฐฉ์‹์ด๋‹ค. ์ด๋Š” ์„ฑ๋Šฅ์ƒ์— ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•˜์—ฌ ์šด์˜ ์ค‘์ธ ์„œ๋ฒ„์˜ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๋Ÿ‰์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ฒŒ ๋œ๋‹ค.

SLF4J(Simple Logging Facadeย For Java)

๋กœ๊น…์— ๋Œ€ํ•œ ์ถ”์ƒ ๋ ˆ์ด์–ด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชจ์Œ.

์ถ”์ƒ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๊ตฌํ˜„์ฒด๊ฐ€ ์—†์ด ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

API , Binding , Bridging ๋ผ๋Š” ์„ธ ๊ฐ€์ง€ ๋ชจ๋“ˆ์„ ์ œ๊ณตํ•œ๋‹ค.

๊ตฌ์„ฑ์š”์†Œ 1. API

  • slf4j ์—์„œ ์ œ๊ณตํ•˜๋Š” api ๋“ค์„ ์˜๋ฏธ

๊ตฌ์„ฑ์š”์†Œ 2. Binding

  • ๋กœ๊น… ๊ตฌํ˜„์ฒด์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ, ์ปดํŒŒ์ผ ํƒ€์ž„์— ์˜ค์ง ํ•˜๋‚˜์˜ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ฐ”์ธ๋”ฉ ํ•œ๋‹ค.

IMAGES

๊ตฌ์„ฑ์š”์†Œ 3. Bridging

  • log4j, JCL, JUL ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๋กœ๊น… API ๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ๋‚ด๋ถ€์—์„œ๋Š” SLF4J API ๋ฅผ ํ˜ธ์ถœํ•˜๋„๋ก(๋ฆฌ๋””๋ ‰์…˜) ์–ด๋Œ‘ํ„ฐ ์—ญํ• ์„ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

Facade ํŒจํ„ด

IMAGES

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํด๋ž˜์Šค๊ฐ€ ํ•˜๋‚˜์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ, ๋Œ€ํ‘œ์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ์„ ๋‹ค๋ฃจ๋Š” ํด๋ž˜์Šค๋ฅผ ๋‘์–ด ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ฒ˜๋ฆฌํ• ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ํŒจํ„ด์ด๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๋Š” Facade์— ์š”์ฒญ์„ ์ „์†กํ•˜์—ฌ Subsystem๊ณผ ํ†ต์‹ ํ•˜๋ฉฐ, Facade๋Š” ํ•ด๋‹น ์š”์ฒญ์„ ์ ์ ˆํ•œ Subsystem ๊ฐ์ฒด๋กœ ์ „๋‹ฌํ•œ๋‹ค.
  • Subsystem ๊ฐ์ฒด๊ฐ€ ์‹ค์ œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ Facade๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ Subsystem ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์ž์ฒด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ฆ‰, ๊ณตํ†ต๋œ Interface๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ๋ณ€ํ™˜ํ•ด์„œ ์—ฐ๊ฒฐํ•œ๋‹ค.
  • Facade๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋Š” Subsystem ๊ฐ์ฒด์— ์ง์ ‘ ์•ก์„ธ์Šคํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ์ฆ‰, ํด๋ผ์ด์–ธํŠธ๋Š” Subsystem์„ ์•Œ ํ•„์š” ์—†์ด Common Interface์—๋งŒ ์ ‘๊ทผํ•œ๋‹ค.

SLF4J ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ

  1. ํด๋ž˜์Šค๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ์‹คํ–‰ํ•ด๋ณด์ž. ( slf4j ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ž„ํฌํŠธ ๋˜์–ด์žˆ์Œ )
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {   
    public static void main(String[] args) {      
        Logger logger = LoggerFactory.getLogger(HelloWorld.class);  
        logger.info("Hello World");   
    }
}
  1. ์‹คํ–‰ ํ•˜๋ฉด, ๋กœ๊ทธ ์ถœ๋ ฅ์€ ์ œ๋Œ€๋กœ ๋˜์ง€ ์•Š๊ณ , ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
  • ์ด ๊ฒฝ๊ณ ๋Š” class path์—์„œ slf4j ๊ตฌํ˜„์ฒด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ถœ๋ ฅ๋œ๋‹ค. ์ฆ‰, class path์— ์‚ฌ์šฉํ•˜๊ธธ ์›ํ•˜๋Š” Logging Framework์— ๋Œ€ํ•œ slf4j ๋ฐ”์ธ๋”ฉ(.jar)์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ, ๋‘˜ ์ด์ƒ์˜ slf4j ๋ฐ”์ธ๋”ฉ(๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜๋งŒ)์„ ๋‘๋ฉด ์•ˆ๋œ๋‹ค.

  • Logging Framework๋ฅผ ์ „ํ™˜ํ•˜๋ ค๋ฉด class path์—์„œ slf4j ๋ฐ”์ธ๋”ฉ์„ ๋ณ€๊ฒฝํ•œ๋‹ค.

  • Ex) java.util.logging โ€”> log4j๋กœ ์ „ํ™˜ํ•˜๋ ค๋ฉด
    slf4j-jdk14-1.7.25.jar โ€”> slf4j-log4j12-1.7.25.jar๋กœ ๋ณ€๊ฒฝ

Log4j

Java ๊ธฐ๋ฐ˜ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ

๊ตฌ์„ฑ์š”์†Œ 1. Logger

๋ฉ”์„ธ์ง€๋ฅผ ๊ธฐ๋กํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.

๊ตฌ์„ฑ์š”์†Œ 2. Appender

ํŒŒ์ผ, DB, Console ๋“ฑ๊ณผ ๊ฐ™์€ ๋Œ€์ƒ์— ๋กœ๊น… ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.

๊ตฌ์„ฑ์š”์†Œ 3. Layout

๋กœ๊น… ์ •๋ณด์˜ ์Šคํƒ€์ผ์„ ์ •ํ•˜๋Š”๋ฐ์— ์‚ฌ์šฉํ•œ๋‹ค.

๋กœ๊ทธ ๋ ˆ๋ฒจ ( ์šฐ์ธก์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ์‹ฌ๊ฐํ•จ )

Trace < Debug < Info < Warn < Error < Fatal

LogBack

log4j ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์†๋„, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ  ๋“ฑ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜์—ฌ ๊ฐœ๋ฐœํ•œ ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  1. Automatic Reloading Configuration file

์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์˜ ๋กœ๊ทธ ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์„ ๋•Œ, ๊ธฐ์กด์˜ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฒฝ์šฐ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์˜ ์žฌ์‹œ์ž‘์ด ํ•„์š”ํ•˜์ง€๋งŒ, LogBack์˜ ๊ฒฝ์šฐ ์„ค์ •ํŒŒ์ผ์„ ์Šค์บ”ํ•˜๋Š” ๋ณ„๋„์˜ ์“ฐ๋ ˆ๋“œ๋ฅผ ๋‘์–ดย ์ง€์ •ํ•œ ์‹œ๊ฐ„๋งˆ๋‹ค ์„ค์ •ํŒŒ์ผ์„ ์Šค์บ”ํ•ด ํ”„๋กœ๊ทธ๋žจ์˜ ์žฌ์‹œ์ž‘ ์—†์ด ์„ค์ •์„ ์ ์šฉ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

  1. Automatic Compression /ย Removal

๋กœ๊ทธ ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ๋•Œ ๋ณ„๋„์˜ ํ”„๋กœ๊ทธ๋žจ์„ ํ†ตํ•ด ์••์ถ•์ด ํ•„์š” ์—†๋„๋กย ์ž๋™ ์••์ถ•์„ ์ง€์›ํ•˜๋ฉฐ, ์‹œ๊ฐ„ ๋˜๋Š” ๊ฐฏ์ˆ˜๋ฅผ ์„ค์ •ํ•˜์—ฌ ์„ค์ •ํ•œ ์‹œ๊ฐ„์ด๋‚˜ ๊ฐฏ์ˆ˜๋ฅผ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ๋กœ๊ทธ ํŒŒ์ผ์ดย ์ž๋™์œผ๋กœ ์‚ญ์ œย ๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. Graceful recovery from I/O failures

๋กœ๊ทธํŒŒ์ผ์€ JDBC, Socket ๋“ฑ์˜ Appender๋ฅผ ํ†ตํ•ด ์›๊ฒฉ ์„œ๋ฒ„์— ์ €์žฅ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งŒ์•ฝ ์›๊ฒฉ์„œ๋ฒ„ ๋˜๋Š” ์—ฐ๊ฒฐ์— ์ผ์‹œ์  ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋กœ๊ทธํŒŒ์ผ์˜ I/O Failure์ด ๋ฐœ์ƒ ํ•  ๊ฒฝ์šฐ, Log4J ์™€ ๊ฐ™์€ ๊ธฐ์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ๋Š” ์„œ๋ฒ„ ๋ณต๊ตฌ์‹œ์ ๊นŒ์ง€์˜ย ํ”„๋กœ๊ทธ๋žจ ์ค‘๋‹จ ๋ฐ ์žฌ์‹œ์ž‘์ด ํ•„์š”ํ•˜์ง€๋งŒ, LogBack์€ ์„œ๋ฒ„ ์ค‘์ง€ ์—†์ด, ์žฅ์•  ๋ฐœ์ƒ์‹œ์ ์œผ๋กœ๋ถ€ํ„ฐ์˜ ์ž๋™๋ณต๊ตฌ๋ฅผ ์ง€์›ํ•œ๋‹ค.

  1. Prudent mode

ํ•˜๋‚˜์˜ ์„œ๋ฒ„์—์„œ ๋™์ž‘ํ•˜๋Š” ์—ฌ๋Ÿฌ JVM์˜ ๋กœ๊ทธ๊ฐ€ ํ•˜๋‚˜์˜ ๋กœ๊ทธํŒŒ์ผ๋กœ ๊ธฐ๋ก๋˜๊ธฐ๋ฅผ ์›ํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ

์ฐธ๊ณ ) Log4j2 vs Logback

  • log4j2๋Š” log4j์—์„œ ๋” ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๋‹ค.

  • log4j2 ๋Š” ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ logback ๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜๋‹ค๊ณ  ํ•œ๋‹ค.

  • ๊ทธ๋ ‡์ง€๋งŒ, ์Šคํ”„๋ง๋ถ€ํŠธ ์—์„œ๋Š” slf4j + logback ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๋‹ค.

์ถœ์ฒ˜ : https://logging.apache.org/log4j/2.x/performance.html

๊ถŒ์žฅ ๋กœ๊ทธ๋ ˆ๋ฒจ ( feat. ๋„ท๋งˆ๋ธ” )

Error

Error(์˜ค๋ฅ˜) ๋ ˆ๋ฒจ์€ ์„œ๋น„์Šค ๋™์ž‘์— ์ด์ƒ์ด ์žˆ์„ ์ •๋„๋กœ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ์ด๋‹ค. DB ์ปค๋„ฅ์…˜ ์˜ค๋ฅ˜๋‚˜, ๋””์Šคํฌ ์ €์žฅ ๊ณต๊ฐ„ ๋ถ€์กฑ ๋“ฑ์˜ ์ƒํ™ฉ์ด ์ด์— ํ•ด๋‹น ํ•œ๋‹ค. Error ๋กœ๊ทธ๊ฐ€ ๋“ฑ์žฅํ•˜๋ฉด, ๋‹น์ผ ๊ทผ๋ฌด์‹œ๊ฐ„ ๋‚ด์— ์šด์˜ ๋‹ด๋‹น์ž๊ฐ€ ํ™•์ธ ์กฐ์น˜ํ•˜๊ณ  ํ•ด๋‹น ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๊ณต์œ ํ•ด์•ผ ํ•œ๋‹ค. ๋™์ผํ•œ Error๊ฐ€ ๋ฐ˜๋ณตํ•ด์„œ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด, ๊ทผ๋ฌด์‹œ๊ฐ„ ์™ธ๋ผ๋„ ์ฆ‰์‹œ ํ™•์ธ ์กฐ์น˜ํ•ด์„œ ๊ณต์œ ํ•ด์•ผ ํ•œ๋‹ค.

Warning

Warning(๊ฒฝ๊ณ ) ๋ ˆ๋ฒจ์€ ์„œ๋น„์Šค ๋™์ž‘์—๋Š” ์ด์ƒ์ด ์—†์ง€๋งŒ, ์ถ”ํ›„ ์žฅ์• ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ์ด๋‹ค. ์ปค๋„ฅ์…˜ ์žฌ์‹œ๋„, ๋ฐฑ์—… ์„œ๋ฒ„๋กœ ๋ณ€๊ฒฝ ๋“ฑ์˜ ์ƒํ™ฉ์ด ์ด์— ํ•ด๋‹น ํ•œ๋‹ค. Warning ๋กœ๊ทธ๊ฐ€ ๋“ฑ์žฅํ•˜๋ฉด, ๋ฐœ์ƒ๋Ÿ‰ ์ถ”์ด๋ฅผ ํ™•์ธํ•ด 1~2์ฃผ ๋‚ด๋กœ ํ™•์ธ ์กฐ์น˜๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.

Info

Info(์•Œ๋ฆผ) ๋ ˆ๋ฒจ์€ ์‹œ์Šคํ…œ ๋™์ž‘ ์ƒ์—์„œ ํŠน์ • ์ž‘์—…์ด ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰๋์Œ์„ ์•Œ๋ ค์ฃผ๋Š” ๊ฒฝ์šฐ์ด๋‹ค. ์ด๋•Œ ๋‹จ์œ„ ์ž‘์—…(Unit of Work)์„ ๊ฐ™์ด ์•Œ๋ ค์ค˜์•ผ ํ•œ๋‹ค. ์ฃผ๋กœ ์„œ๋น„์Šค ์‹œ์ž‘ ๋ฐ ์ข…๋ฃŒ๋‚˜ ํŠน์ • ๋‹จ์œ„ ๋“ฑ๋ก ๋ฐ ์‚ญ์ œ ๋“ฑ์˜ ์ƒํ™ฉ์ด ์ด์— ํ•ด๋‹น,
Info ๋กœ๊ทธ๋Š” ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒํ•œ ์ž‘์—…์–‘์„ ์ธก์ •ํ•˜๊ฑฐ๋‚˜, ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์ด๋‚˜ ์„ค์ • ์ •๋ณด๋ฅผ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

Debug

Debug(๋””๋ฒ„๊ทธ) ๋ ˆ๋ฒจ์€ Info ๋กœ๊ทธ์—์„œ ๊ธฐ๋ก๋œ ๋‹จ์œ„ ์ž‘์—…์˜ ์ƒ์„ธํ•œ ๋‹จ๊ณ„๋ฅผ ๊ธฐ๋กํ•œ๋‹ค. ์ฃผ๋กœ ๊ฐœ๋ฐœ ๋ฐ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„์—์„œ ๋””๋ฒ„๊น… ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์šด์˜ ์ค‘ ๋ฌธ์ œ ๋ฐœ์ƒ์‹œ ์›์ธ ํŒŒ์•…์„ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

Reference