๋ก๊ทธ (Log)
๋ก๊ทธ(Log)๋ ์์คํ ์ด ๋์ํ ๋ ์์คํ ์ ์ํ ๋ฐ ๋์ ์ ๋ณด๋ฅผ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ผ ๊ธฐ๋กํ๋ ๊ฒ
๋ก๊ทธ ๋ ๋ฒจ (Log Level)
๋ก๊ทธ๋ ๋ก๊ทธ ๋ ๋ฒจ์ ๋ฐ๋ผ ์ถ๋ ฅ๋ ์ง ๋์ด๊ฐ์ง ๊ฒฐ์ ํ๋ค. ๋ก๊ทธ ๋ ๋ฒจ์ ๋ฐ๋ฅธ ์ฌ๊ฐ๋ ์์ค์ ์๋์ ๊ฐ๋ค.
Trace > Debug > Info > Warn > Error > Fatal
| ๋ก๊ทธ ๋ ๋ฒจ | ์ค๋ช | ์์ |
| TRACE | ๊ฐ์ฅ ์์ธํ ์ ๋ณด(๋ฉ์๋ ํธ์ถ ๋จ์) | ๋ฉ์๋ ์ง์ /๋ฐํ ์์ ๋ฑ |
| DEBUG | ๋๋ฒ๊น ์ฉ ์์ธ ์ ๋ณด | ๋ณ์ ๊ฐ, ๋ก์ง ํ๋ฆ ์ถ์ |
| INFO | ์ผ๋ฐ์ ์ธ ์ ๋ณด | ์๋น์ค ์์, ์์ฒญ ์ฒ๋ฆฌ ์๋ฃ |
| WARN | ๊ฒฝ๊ณ ์ํฉ(์๋ฌ๋ ์๋์ง๋ง ์ฃผ์ ํ์) | ์ฑ๋ฅ ์ ํ, ์์์น ๋ชปํ ์ ๋ ฅ |
| ERROR | ์ค๋ฅ ๋ฐ์ | ์์ธ, ์์คํ ์ฅ์ |
๐ก API๋ฅผ ๊ฐ๋ฐํ ๋๋ ๋ก๊ทธ ๋ ๋ฒจ์ DEBUG๋ก ์ค์ , ๋ฐฐํฌ์์๋ INFO๋ Warn ๋ ๋ฒจ๋ก ์ค์ ํ๊ธฐ.
๋ก๊ทธ ์ค์ (application.yml) ์์
์คํ๋ง ๋ถํธ์์๋ application.yml ๋๋ application.properties์์ ๋ก๊ทธ ๋ ๋ฒจ์ ์ ์ดํ ์ ์๋ค.
logging:
level:
root: INFO
com.example.myapp: DEBUG
file:
name: logs/myapp.log
- ๊ธฐ๋ณธ(root) ๋ก๊ทธ ๋ ๋ฒจ์ INFO
- ํน์ ํจํค์ง(com.example.myapp)๋ DEBUG
- ๋ก๊ทธ ํ์ผ์ logs/myapp.log์ ๊ธฐ๋ก๋จ
@Slf4j
@RestController
public class LogExampleController {
@GetMapping("/log-test")
public String logTest() {
String name = "userA";
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";
}
}
์คํ๊ฒฐ๊ณผ:
INFO c.e.demo.LogExampleController - Info log = userA
WARN c.e.demo.LogExampleController - Warn log = userA
ERROR c.e.demo.LogExampleController - Error log = userA
๋ก๊ทธ๋ ๋ฒจ์ INFO๋ก ์ค์ ํ๊ธฐ ๋๋ฌธ์ INFO ์ดํ๋ง ์ถ๋ ฅํ๋ค. trace, debug๋ ์๋ต๋จ.
๋ก๊ทธ ์ถ๋ ฅ ์ ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฃผ์
- slf4j์ {}์ ๋ฌธ์์ด ๋ฐ์ธ๋ฉ ๊ธฐ๋ฅ์ ํตํด ํด๋น ์์น์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฃ์ด ๋ก๊ทธ๋ฅผ ํ์ธํ๋ค.
- ํ๋ผ๋ฏธํฐ๋ ํ ๊ฐ ํน์ ๋ ๊ฐ ๋ง์ ์ฌ์ฉํ์ (3๊ฐ ์ด์ ์ฌ์ฉ ์, Object[] ์ ์์ฑํ๋ค)
log.debug("์ ์ ์ ๋ณด: {}", user.getName());
@Slf4j๋?
@Slf4j๋ Lombok์ ์ด๋
ธํ
์ด์
์ผ๋ก,
ํด๋์ค ๋ด๋ถ์์ log๋ผ๋ ์ด๋ฆ์ ๋ก๊น
๊ฐ์ฒด๋ฅผ ์๋์ผ๋ก ์์ฑํด ์ค๋ค.
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class MyService {
public void doSomething() {
log.info("์๋น์ค ๋ก์ง์ด ์คํ๋์์ต๋๋ค.");
log.debug("๋๋ฒ๊ทธ ๋ก๊ทธ์
๋๋ค: {}", "๋๋ฒ๊ทธ ์ ๋ณด");
log.error("์๋ฌ ๋ฐ์!", new RuntimeException("์์ ์์ธ"));
}
}
์ ์ฝ๋๋ Lombok์ด ์๋์ผ๋ก Log๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์ค๋ค.
์๋์ฝ๋๋ฅผ ๋์ ํ๋ ์ด๋ ธํ ์ด์ ๐
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(MyService.class);
์ฆ, log ๊ฐ์ฒด๋ฅผ ์ง์ ์ ์ธํ ํ์ ์์ด ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ค.