EEALL@ONCE

๐ŸŒฑ ํ˜„์—…์—์„œ System.out.println ๋Œ€์‹  ๋กœ๊น…์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ (SLF4J(๊ฐ„๋‹จํ•œ ๋กœ๊น… ํŒฉ์‚ฌ๋“œ)์™€ Logback) ๋ณธ๋ฌธ

Spring๐ŸŒฑ

๐ŸŒฑ ํ˜„์—…์—์„œ System.out.println ๋Œ€์‹  ๋กœ๊น…์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ (SLF4J(๊ฐ„๋‹จํ•œ ๋กœ๊น… ํŒฉ์‚ฌ๋“œ)์™€ Logback)

์˜ฌ์—ฃ์›์Šค 2023. 10. 16. 19:21
728x90

ํ˜„์—…์—์„œ System.out.println ๋Œ€์‹  ๋กœ๊น…์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  1. ๋กœ๊ทธ ๋ ˆ๋ฒจ ๊ด€๋ฆฌ: ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค์–‘ํ•œ ๋ ˆ๋ฒจ๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ DEBUG, INFO, WARN, ERROR, ๋“ฑ์˜ ๋ ˆ๋ฒจ๋กœ ๋กœ๊ทธ๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์–ด๋–ค ์กฐ๊ฑด์—์„œ ๋ฐœ์ƒํ•˜๋Š”์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋™์  ์„ค์ •: ๋กœ๊น… ๋ ˆ๋ฒจ์„ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์–ด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ๋Ÿฐํƒ€์ž„์— ๋กœ๊น… ๋ ˆ๋ฒจ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋””๋ฒ„๊น… ์‹œ์— ์œ ์šฉํ•˜๋ฉฐ, ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด ๋กœ๊ทธ ์ˆ˜์ค€์„ ๋†’์ด๊ฑฐ๋‚˜ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ๋กœ๊น… ์œ„์น˜ ์„ค์ •: ๋กœ๊ทธ๋ฅผ ํŒŒ์ผ, ์ฝ˜์†”, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“ฑ ์—ฌ๋Ÿฌ ์œ„์น˜์— ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ์ค‘์•™ ์ง‘์ค‘ํ™”ํ•˜๊ฑฐ๋‚˜, ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ฑฐ๋‚˜, ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋ถ„์„์„ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  4. ์„ฑ๋Šฅ ์ตœ์ ํ™”: ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํšจ์œจ์ ์ธ ๋กœ๊น…์„ ์œ„ํ•œ ์ตœ์ ํ™”๋œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•  ๋•Œ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.
  5. ๊ธฐ๋ก ๋ฐ ์ถ”์ : ๋กœ๊น…์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์„ ๊ธฐ๋กํ•˜๊ณ  ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ์™€ ๋™์ž‘์„ ํŒŒ์•…ํ•˜๊ณ , ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” Java์—์„œ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyClass {
    private static final Logger logger = LoggerFactory.getLogger(MyClass.class);

    public void doSomething() {
        // ...

        // ๋กœ๊ทธ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ
        logger.debug("Debug ๋ฉ”์‹œ์ง€");
        logger.info("Info ๋ฉ”์‹œ์ง€");
        logger.warn("Warn ๋ฉ”์‹œ์ง€");
        logger.error("Error ๋ฉ”์‹œ์ง€");
    }
}

 

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SLF4J(๊ฐ„๋‹จํ•œ ๋กœ๊น… ํŒฉ์‚ฌ๋“œ)์™€ Logback์€ Java ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋กœ๊น…์— ์‚ฌ์šฉ๋˜๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๊ฐ๊ฐ์ด ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1. **SLF4J (Simple Logging Facade for Java):**
   - SLF4J๋Š” ๋กœ๊น…์— ๋Œ€ํ•œ ์ถ”์ƒํ™” ๋ ˆ์ด์–ด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ(์˜ˆ: Logback, Log4J, JUL)์™€ ์—ฐ๊ฒฐ๋˜์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
   - ์ฃผ์š” ๋ชฉ์ ์€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ์—์„œ ๋กœ๊น… ์ฝ”๋“œ๋ฅผ ํŠน์ • ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ์— ์˜์กดํ•˜์ง€ ์•Š๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ฝ”๋“œ๋ฅผ ๋” ์œ ์—ฐํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ , ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๋•Œ ์‰ฝ๊ฒŒ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.
   - SLF4J๋Š” ๋กœ๊ฑฐ ๋ฐ”์ธ๋”ฉ(Logger Binding)์„ ํ†ตํ•ด ๋ฐฑ์—”๋“œ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์ด๋กœ์จ Logback, Log4J, JUL ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฑ์—”๋“œ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. **Logback:**
   - Logback์€ SLF4J์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฑ์—”๋“œ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. SLF4J๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ Logback์„ ์„ ํƒํ•˜๋ฉด ์ข‹์€ ํ†ตํ•ฉ๊ณผ ์„ฑ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
   - Logback์€ ์„ฑ๋Šฅ์ด ์šฐ์ˆ˜ํ•˜๋ฉฐ, ๋กœ๊น… ์ด๋ฒคํŠธ๋ฅผ ํŒŒ์ผ, ์ฝ˜์†”, ์›๊ฒฉ ์„œ๋ฒ„ ๋“ฑ ๋‹ค์–‘ํ•œ ๋Œ€์ƒ์— ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
   - XML ๋˜๋Š” Groovy ์„ค์ • ํŒŒ์ผ์„ ํ†ตํ•ด ๋กœ๊ทธ ๋ ˆ๋ฒจ, ์ถœ๋ ฅ ํ˜•์‹, ๋กœ๊ทธ ํŒŒ์ผ ์œ„์น˜ ๋“ฑ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
   - Logback์€ ์ž์ฒด์ ์œผ๋กœ ํŒจํ„ด ๋ ˆ์ด์•„์›ƒ(PatternLayout)์„ ์ง€์›ํ•˜๋ฉฐ, ๋กœ๊ทธ ๋ฉ”์‹œ์ง€์˜ ํ˜•์‹์„ ๋งž์ถ”๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

728x90