๐Ÿ“—Spring MVC Study [ Logging ]

Caruhยท2025๋…„ 3์›” 20์ผ

Spring MVC

๋ชฉ๋ก ๋ณด๊ธฐ
12/17
post-thumbnail

์šด์˜ ์‹œ์Šคํ…œ์—์„œ๋Š” System.out.println() ๊ฐ™์€ ์‹œ์Šคํ…œ ์ฝ˜์†”์„ ์‚ฌ์šฉํ•ด์„œ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ์•Š๊ณ , ๋ณ„๋„์˜ ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋กœ๊ทธ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์Šคํ”„๋ง ๋ถ€ํŠธ ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(spring-boot-starter-logging)๊ฐ€ ํ•จ๊ป˜ ํฌํ•จ๋œ๋‹ค.

  • ์Šคํ”„๋ง ๋ถ€ํŠธ ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ธฐ๋ณธ์œผ๋กœ ๋‹ค์Œ ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ๋กœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Logback,Log4J, Log4J2 ๋“ฑ๋“ฑ ์ˆ˜๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋Š”๋ฐ, ๊ทธ๊ฒƒ์„ ํ†ตํ•ฉํ•ด์„œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ SLF4J๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค.

package hello.springmvc.basic;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//@Slf4j
@RestController
public class LogTestController {
	private final Logger log = LoggerFactory.getLogger(getClass());
	@RequestMapping("/log-test")
	public String logTest() {
	String name = "Spring";
        
    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);
    //๋กœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ a+b ๊ณ„์‚ฐ ๋กœ์ง์ด ๋จผ์ € ์‹คํ–‰๋จ, ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด X
    log.debug("String concat log=" + name);
 	return "ok";
    }
 }

๋กœ๊ทธ ์„ ์–ธ

  • private Logger log = LoggerFactory.getLogger(getClass());
  • private static final Logger log = LoggerFactory.getLogger(Xxx.class)
  • Slf4j : ๋กฌ๋ณต ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๋กœ๊ทธ ํ˜ธ์ถœ

  • log.info("hello")
  • System.out.println("hello")
  • ์‹œ์Šคํ…œ ์ฝ˜์†”๋กœ ์ง์ ‘ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค ๋กœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์ด ์กด์žฌํ•œ๋‹ค. ์‹ค๋ฌด์—์„œ๋Š” ํ•ญ์ƒ ๋กœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ

๋งคํ•‘ ์ •๋ณด

  • @RestController
    • @Controller๋Š” ๋ฐ˜ํ™˜๊ฐ’์ด String์ด๋ฉด ๋ทฐ ์ด๋ฆ„์œผ๋กœ ์ธ์‹๋œ๋‹ค. ๊ทธ๋ž˜์„œ ๋ทฐ๋ฅผ ์ฐพ๊ณ  ๋ทฐ๊ฐ€ ๋ Œ๋”๋ง ๋œ๋‹ค.
    • @RestController๋Š” ๋ฐ˜ํ™˜ ๊ฐ’์œผ๋กœ ๋ทฐ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, HTTP ๋ฉ”์‹œ์ง€ ๋ฐ”๋””์— ๋ฐ”๋กœ ์ž…๋ ฅํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์‹คํ–‰ ๊ฒฐ๊ณผ๋กœ ok๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. @ResponseBody์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค.

ํ…Œ์ŠคํŠธ

  • ๋กœ๊ทธ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ํฌ๋ฉง ํ™•์ธ
    • ์‹œ๊ฐ„, ๋กœ๊ทธ ๋ ˆ๋ฒจ, ํ”„๋กœ์„ธ์ŠคID, ์“ฐ๋ ˆ๋“œ ๋ช…, ํด๋ž˜์Šค๋ช…, ๋กœ๊ทธ ๋ฉ”์‹œ์ง€
  • ๋กœ๊ทธ ๋ ˆ๋ฒจ ์„ค์ •์„ ๋ณ€๊ฒฝํ•ด์„œ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ž.
    • LEVEL : TRACE > DEBUG > INFO > WARN > ERROR
    • ๊ฐœ๋ฐœ ์„œ๋ฒ„๋Š” debug ์ถœ๋ ฅ
    • ์šด์˜ ์„œ๋ฒ„๋Š” info ์ถœ๋ ฅ
  • @Slf4j๋กœ ๋ณ€๊ฒฝ

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

# application.properties
# ์ „์ฒด ๋กœ๊ทธ ๋ ˆ๋ฒจ ์„ค์ •(๊ธฐ๋ณธ info)
logging.level.root=info

#hello.springmvc ํŒจํ‚ค์ง€์™€ ๊ทธ ํ•˜์œ„ ๋กœ๊ทธ ๋ ˆ๋ฒจ ์„ค์ •
logging.level.hello.springmvc=debug

์˜ฌ๋ฐ”๋ฅธ ๋กœ๊ทธ ์‚ฌ์šฉ๋ฒ•

  • log.debug("data="+data) > ์ž˜๋ชป๋œ ๋กœ๊ทธ ์‚ฌ์šฉ๋ฒ•
    • ๋กœ๊ทธ ์ถœ๋ ฅ ๋ ˆ๋ฒจ info๋ฅผ ์„ค์ •ํ•ด๋„ ํ•ด๋‹น ์ฝ”๋“œ์— ์žˆ๋Š” "data="+data๊ฐ€ ์‹ค์ œ ์‹คํ–‰์ด ๋˜์–ด ๋ฒ„๋ฆฐ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ฌธ์ž ๋”ํ•˜๊ธฐ ์—ฐ์‚ฐ์ด ๋ฐœ์ƒํ•˜์—ฌ cpu, ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž˜๋ชป๋œ ๋กœ๊ทธ ์‚ฌ์šฉ๋ฒ•์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • log.debug("data={}", data)
    • ๋กœ๊ทธ ์ถœ๋ ฅ ๋ ˆ๋ฒจ์„ info๋กœ ์„ค์ •ํ•˜๋ฉด ์•„๋ฌด์ผ๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ์•ž๊ณผ ๊ฐ™์€ ์˜๋ฏธ์—†๋Š” ์—ฐ์‚ฐ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋กœ๊ทธ ์‚ฌ์šฉ์‹œ ์žฅ์ 

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

๐Ÿ“ญ Reference

profile
Backend Developer

0๊ฐœ์˜ ๋Œ“๊ธ€