Spring

Spring boot - ๋กœ๊น… [ ์Šคํ”„๋ง ๋กœ๊ทธ๋‚จ๊ธฐ๊ธฐ ]

DAHLIA CHOI 2021. 8. 13. 03:20

 

 

 

์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋กœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ž๋™์ ์œผ๋กœ ์ถ”๊ฐ€๋œ๋‹ค.

 

๋กœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ข…๋ฅ˜๊ฐ€ ๋งŽ์€๋ฐ ๊ทธ๊ฒƒ์„ ํ†ตํ•ฉ์ ์œผ๋กœ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด SLF4J ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.

์‹ค๋ฌด์—์„œ๋Š” Logback์„ ๋Œ€๋ถ€๋ถ„ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

๐Ÿ’ฌ ๋กœ๊ทธ ์„ ์–ธ ๋ฐฉ๋ฒ•

// 1๋ฒˆ ๋ฐฉ๋ฒ•
private Logger log = LoggerFactory.getLogger(getClass());
// 2๋ฒˆ ๋ฐฉ๋ฒ•
private static final Logger log = LoggerFactory.getLogger(Xxx.class);
//3๋ฒˆ ๋ฐฉ๋ฒ• ์• ๋…ธํ…Œ์ด์…˜ ์‚ฌ์šฉ(lombok์ด ์ œ๊ณต)
@Slf4j

 

โœ ์ฒซ๋ฒˆ์งธ ๋‘ ๋ฒˆ์งธ ๋กœ๊ทธ ์„ ์–ธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ

๋กœ๊ทธ๋Š” slf4j๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

 

 

 

๐Ÿ“ ๋กœ๊ทธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

@Slf4j // lombok์ด ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ (= private final Logger log = LoggerFactory.getLogger(getClass()); )
@RestController
public class LogTestController {

    @RequestMapping("/log-test")
    public String logTest(){
        String name = "Spring";
        System.out.println("name = " + name);

        // ๋ ˆ๋ฒจ ํ™•์ธ
        log.trace("trace log={}", name);
        log.debug("debug log={}", name);
        log.info("info log={}", name); // ์ค‘์š”ํ•œ ์ •๋ณด
        log.warn("warn log={}", name); // ๊ฒฝ๊ณ 
        log.error("error log={}", name); // ์—๋Ÿฌ

        return "ok";
    }
}

 

 

1. @RestController

@Controller ๋Œ€์‹ ์— @RestController๋ฅผ ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ฐ€ ์žˆ๋‹ค.

๐Ÿ‘‰ @Controller๋Š” ๋ฐ˜ํ™˜ ๊ฐ’์ด String์ด๋ฉด view์ด๋ฆ„์œผ๋กœ ์•Œ๊ณ  view๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋ Œ๋”๋ง ํ•œ๋‹ค.

๐Ÿ‘‰ @RestController๋Š” ๋ฐ˜ํ™˜ ๊ฐ’์ด String์ด์–ด๋„ ๊ทธ๋ƒฅ String์ด ๋ฐ˜ํ™˜๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„์˜ ์˜ˆ์‹œ์ฒ˜๋Ÿผ return "ok"; ๋ผ๊ณ  ์ž…๋ ฅํ•ด๋„ ํ™”๋ฉด์— ok๋ผ๊ณ  ํ‘œ์‹œ๋œ๋‹ค.

 

 

2. ๋กœ๊ทธ ๋ ˆ๋ฒจ

ERROR
WARN
INFO
DEBUG
TRACE

๋กœ๊ทธ ๋ ˆ๋ฒจ์€ TRACE > DEBUG > INFO > WARN > ERROR์ด๋‹ค.

 

 

 

3. ๋กœ๊ทธ ํฌ๋งท ํ™•์ธ

๐Ÿ‘‰ 2021-08-12 21:52:18.003  : ์‹œ๊ฐ„

๐Ÿ‘‰ INFO : ๋กœ๊ทธ ๋ ˆ๋ฒจ

๐Ÿ‘‰  21200 : ํ”„๋กœ์„ธ์Šค ID

๐Ÿ‘‰  [nio-8080-exec-1] : ์“ฐ๋ ˆ๋“œ ์ •๋ณด

๐Ÿ‘‰  hello.springmvc.basic.LogTestController  : ์ปจํŠธ๋กค๋Ÿฌ ์ด๋ฆ„, ํด๋ž˜์Šค ์ด๋ฆ„

๐Ÿ‘‰  info log=Spring : ๋ฉ”์‹œ์ง€

 

 

 

4. ๋กœ๊ทธ ๋ ˆ๋ฒจ ์„ค์ •

๋กœ๊ทธ ๋ ˆ๋ฒจ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ info๋กœ ์„ค์ •๋˜์–ด์žˆ๋‹ค. 

๋”ฐ๋ผ์„œ ๋”ฐ๋กœ ๋กœ๊ทธ ๋ ˆ๋ฒจ์„ ์„ค์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด info, warn, error๋งŒ ์ฝ˜์†” ์ฐฝ์— ์ถœ๋ ฅ๋œ๋‹ค.

 

๋กœ๊ทธ ๋ ˆ๋ฒจ ๋ฒ”์œ„๋ฅผ ์กฐ์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด application.propertiesํŒŒ์ผ์— ๋“ค์–ด๊ฐ€์„œ ๋”ฐ๋กœ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

 

โ—พ ์ „์ฒด ๋กœ๊ทธ ๋ ˆ๋ฒจ ์„ค์ •

logging.level.root=(trace or debug or info or warn or error)

 

โ—พ ๋ชจ๋“  ๋กœ๊ทธ๋ฅผ ๋ณด๊ณ  ์‹ถ์„ ๋•Œ

logging.level.[Group๋ช….Artifact๋ช…]=trace
// ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ
logging.level.hello.spingmvc=trace

 

โ—พ DEBUG ๋ฐ‘์œผ๋กœ ๋ชจ๋‘ ๋ณด๊ณ  ์‹ถ์„ ๋•Œ

logging.level.[Group๋ช….Artifact๋ช…]=debug

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด debug๋ฅผ ํฌํ•จํ•œ ํ•˜์œ„ ๋ ˆ๋ฒจ์˜ ๋กœ๊ทธ๊ฐ€ ๋ชจ๋‘ ์ถœ๋ ฅ๋œ๋‹ค. (debug, info, warn, error)

 

 

โญ ๊ฐœ๋ฐœ ์„œ๋ฒ„์—์„œ๋Š” debug๋กœ, ์šด์˜ ์„œ๋ฒ„์—์„œ๋Š” info ์„ค์ •์„ ๊ธฐ๋ณธ์œผ๋กœ ๊ถŒ์žฅํ•œ๋‹ค.

 

 

 

โœ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ 

 

โž–

๋กœ๊ทธ๋ฅผ System.out.println();์œผ๋กœ ๋‚จ๊ธฐ๋ฉด ์ ˆ๋Œ€ ์•ˆ ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๊ฒฝ์šฐ์— ์ƒ๊ด€์—†์ด ๋งค๋ฒˆ ์ถœ๋ ฅ์ด ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋‚ญ๋น„๊ฐ€ ์‹ฌํ•˜๋‹ค.

 

โž–

log.trace("trace log=" + name); ์ด๋ž‘ log.trace("trace log={}", name); ์€ ๊ฐ™์€ ๊ฐ’์ด ์ถœ๋ ฅ๋œ๋‹ค.

ํ•˜์ง€๋งŒ, log.trace("trace log={}", name); ์˜ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค!!!

๋งŒ์•ฝ ๋กœ๊ทธ ๋ ˆ๋ฒจ์˜ ๋ฒ”์œ„๋ฅผ debug๋กœ ์„ค์ •ํ–ˆ์„ ๊ฒฝ์šฐ์— trace๋Š” ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค. ํ•˜์ง€๋งŒ ์ž๋ฐ”์—์„œ๋Š” + ์—ฐ์‚ฐ์„    ๋จผ์ € ํ•˜๊ฒŒ ์„ค์ •๋˜์–ด์žˆ๋‹ค. ๋”ฐ๋ผ์„œ log.trace("trace log=" + name); ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ์—๋Š”, trace๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์—ฐ์‚ฐ์„ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์“ธ๋ชจ์—†๋Š” ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„๊ฐ€ ์ผ์–ด๋‚œ๋‹ค. ๋”ฐ๋ผ์„œ ์˜ค๋ฅธ์ชฝ ๊ฐ™์€ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

์˜ค๋ฅธ์ชฝ ๋ฐฉ์‹์€ ๊ทธ๋ƒฅ ๋ฉ”์„œ๋“œ ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ์‚ฐ์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

 

 

๐Ÿ‘ ๋กœ๊ทธ ์‚ฌ์šฉ ์žฅ์ 

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

 

 


์ž˜๋ชป๋œ ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€์— ๋‚จ๊ฒจ์ฃผ์„ธ์š”!

 

โž• ์Šคํ”„๋ง ๋ถ€ํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋กœ๊ทธ ๊ธฐ๋Šฅ

 

์ด ํฌ์ŠคํŒ…์€ ์ธํ”„๋Ÿฐ ๊น€์˜ํ•œ๋‹˜์˜ [์Šคํ”„๋ง MVC 1ํŽธ - ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ ํ•ต์‹ฌ ๊ธฐ์ˆ ]์„ ๋“ฃ๊ณ  ์ž‘์„ฑ๋œ ๋ณต์Šต ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค.