Logging
์ด์ ๋๋ ๊ฐ๋ฐ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๋, ์์ธ์ ํ์ ํ๊ธฐ ์ํด ๋น์์ ์ ๋ณด๊ฐ ํ์ํ๋ค. ์ด๋ฌํ ์ ๋ณด๋ฅผ ์ป๊ธฐ์ํด์ Logging์ ์ฌ์ฉํ๋ค. ์ฌ์ ์ ์ธ ์๋ฏธ๋ก๋ "๊ธฐ๋กํ๋ ํ์" ์ด๊ณ , ์ด๋ฐ ํ์ผ๋ค์ ๋ชจ์๋์ ๊ฒ์ Logํ์ผ์ด๋ผ๊ณ ํ๋ค. ๋ฒ๊ทธ๋ ์์ธ์ ๋ํ ์ ์ฉํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ ์ฑ๋ฅ์ด๋ ์ฅ์ ์ ๋ํ ๊ธฐ๋ก์ ๋จ๊ธฐ๋ ๊ฒ์ผ๋ก ์ ์ ํ ์์๊ฒ ๋ค.
์๋ฐ์์ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด์ ์ง๊ธ๊น์ง๋ System.out.println() ์ ์ฌ์ฉํ๋ค. ํ์ง๋ง ์ด๋ฌํ ๋ฐฉ์์ ๊ถ์ฅ๋์ง ์๋๋ค. ์ง๊ธ๋ถํฐ ๊ทธ ์ด์ ๋ฅผ ์์๋ณด์!
System.out.println() ์ฌ์ฉํ๋ฉด ์๋๋ ์ด์
1. ๋ก๊น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋นํด ์ฑ๋ฅ์ด ๋ฎ๋ค.
2. ๋ ์ง, ์๊ฐ, ๋ ๋ฒจ ๋ฑ์ ์ ๋ณด๋ฅผ ์ง์ ๋ง๋ค์ด์ ์์ฑํด์ผ ๋๋ค.
3. ์ฝ์์ฐฝ์๋ง ์ถ๋ ฅ๋์ด ์ ๊ทผ์ด ํ๋ค๋ค.
4. ์ํ๋ ์์น์ ๋จ๊ธธ์๊ฐ ์๋ค.
๋ก๊น ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์คํ๋ง๋ถํธ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํฌํจ๋๋ค. ์คํ๋ง๋ถํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก SLF4J, Logback
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค. ๋ก๊ทธ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ์ฌ๋ผ๊ฐ์ง ์ข ๋ฅ๊ฐ ์๋๋ฐ ์ด๊ฒ์ ํตํฉํด์ ์ธํฐํ์ด์ค๋ก ์ ๊ณตํ๋ ๊ฒ์ด SLF4J๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ฆ, SLF4J์ ๊ตฌํ์ฒด๋ก Logback๋ฑ์ ๋ก๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ณ ์ด๊ฒ์ ์ ํํด์ ์ฌ์ฉํ๋ฉด ๋๋๊ฒ์ด๋ค
๋ก๊ทธ ์ ์ธ๋ฐฉ๋ฒ
@RestController
public class LogTestController {
private final Logger log = LoggerFactory.getLogger(getClass()); //๋ก๊ทธ์ ์ธ
private static final Logger log = LoggerFactory.getLogger(LogTestController.class) //์ด๋ฐ๋ฐฉ์๋ ๊ฐ๋ฅ
@RequestMapping("/log")
public String log() {
String name = "hi";
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";
}
}
์ด๋ ๊ฒ ์ง์ Logger๋ฅผ ๊ฐ์ ธ๋ค๊ฐ ์ฐ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง ์๋ ๋ฐฉ๋ฒ์ ์ฐ๋ฉด ๋ ํธํ๊ฒ ์ฌ์ฉํ ์์๋ค.
@Slf4j //์ ์ธ
@RestController
public class LogTestController {
@RequestMapping("/log")
public String log() {
String name = "hi";
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";
}
}
๋ก๊ทธ์์ฑ์์๋ ์์๊ฐ์ด "{}"๋ฅผ ์ฌ์ฉํ๊ณ ์ผํ๋ค์ ๋ณ์๋ช ์ ๋ฃ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ๊ถ์ฅ๋๋ค.
๋ก๊ทธ์ ์ถ๋ ฅ ํฌ๋งท์ ๋ณด๋ฉด ์์ชฝ๋ถํฐ ์์๋๋ก
์๊ฐ, ๋ก๊ทธ ๋ ๋ฒจ, ํ๋ก์ธ์คID, thread์ด๋ฆ, Class์ด๋ฆ, ๋ก๊ทธ๋ฉ์ธ์ง ๋ก ์ถ๋ ฅ๋๋ค.
๋ก๊ทธ์ Level
๋ก๊ทธ์ ๋ ๋ฒจ์
- TRACE : ์ ๋ถ๋ค ์ฐํ๋ค.
- DEBUG : ๊ฐ๋ฐ์๋ฒ์์ ์ฌ์ฉ
- INFO : ์ด์์๋ฒ์์ ์ฌ์ฉ
- WARN
- ERROR
์์ผ๋ก ์ถ๋ ฅ๋๋ค.