๐[Spring] slf4j์ logback.
1๏ธโฃ slf4j
-
'SLF4J(Simple Logging Facade for Java)'
๋ Java ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ก๊ทธ ๊ธฐ๋ก์ ์ฝ๊ฒ ๊ด๋ฆฌํ๊ณ ๋ค๋ฅธ ๋ก๊น ํ๋ ์์ํฌ์ ํตํฉํ ์ ์๋๋ก ๋์์ฃผ๋ ๋ก๊น ์ธํฐํ์ด์ค์ ๋๋ค. -
'SLF4J'
๋ ๋ค์ํ ๋ก๊น ํ๋ ์์ํฌ(e.g, Log4j, Logback, java.util.logging ๋ฑ)์ ๋ํด ๊ณตํต๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๊ฐ ํน์ ๋ก๊น ํ๋ ์์ํฌ์ ์ข ์๋์ง ์๊ณ ์ ์ฐํ๊ฒ ๋ก๊ทธ๋ฅผ ๊ด๋ฆฌํ ์ ์๋๋ก ํฉ๋๋ค.
1๏ธโฃ slf4j์ ์ฃผ์ ๊ธฐ๋ฅ.
-
-
๋ก๊น
ํ๋ ์์ํฌ์์ ์ถ์ํ
- slf4j๋ ์ฌ๋ฌ ๋ก๊น ํ๋ ์์ํฌ์ ์ข ์๋์ง ์๊ฒ ํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, ์ฝ๋์์ slf4j ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ค์ ๋ก๊น ํ๋ ์์ํฌ๋ฅผ ์ฝ๊ฒ ๊ต์ฒดํ ์ ์์ต๋๋ค.
-
๋ก๊น
ํ๋ ์์ํฌ์์ ์ถ์ํ
-
-
๋ก๊น
์ฑ๋ฅ ์ต์ ํ
- slf4j๋ ๋ฌธ์์ด ๋ณํฉ์ ๋ฐ๋ฅธ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํผํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, slf4j๋ ๋ก๊ทธ ๋ฉ์์ง์ ๋ฌธ์์ด ๊ฒฐํฉ์ ์ง์ฐ์์ผ, ๋ก๊ทธ๊ฐ ์ค์ ๋ก ๊ธฐ๋ก๋ ๋๋ง ๊ฒฐํฉ์ด ๋ฐ์ํ๋๋ก ํฉ๋๋ค.
-
๋ก๊น
์ฑ๋ฅ ์ต์ ํ
-
-
API ์ผ๊ด์ฑ
- slf4j๋ฅผ ์ฌ์ฉํ๋ฉด ๋ก๊น ์ ์ํ ์ผ๊ด๋ API๋ฅผ ์ ๊ณต๋ฐ์ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ๋ก๊น ์ ํ์คํํ ์ ์์ต๋๋ค.
-
API ์ผ๊ด์ฑ
2๏ธโฃ ์ฌ์ฉ ๋ฐฉ๋ฒ.
- slf4j๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋, ์ฐ์ slf4j ์ธํฐํ์ด์ค์ ์ด๋ฅผ ๊ตฌํํ ๋ก๊น
ํ๋ ์์ํฌ(์: Logback)๋ฅผ ํ๋ก์ ํธ์ ํฌํจ์์ผ์ผ ํฉ๋๋ค.
- ์ฝ๋๋ ์ผ๋ฐ์ ์ผ๋ก ์๋์ ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค.
```java
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
- ์ฝ๋๋ ์ผ๋ฐ์ ์ผ๋ก ์๋์ ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค.
public class MyClass {
// Logger ์์ฑ
private static final Logger logger = LoggerFactory.getLogger(MyClass.class);
public void doSomthing() {
// ๋ก๊ทธ ๋ฉ์์ง ๊ธฐ๋ก
logger.info("This is an info message");
logger.debug("This is a debug message");
} } ``` - ์ด ์ฝ๋๋ **`'slf4j'`** ๋ฅผ ์ด์ฉํด ๋ก๊ทธ๋ฅผ ๊ธฐ๋กํ๋ ์๋ก, ๋ก๊น
๋ฉ์์ง๋ ์ค์ ๋ ๋ก๊น
ํ๋ ์์ํฌ๋ฅผ ํตํด ์ถ๋ ฅ๋ฉ๋๋ค.
โ๏ธ ์์ฝ.
- slf4j๋ Java ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ก๊น
ํ๋ ์์ํฌ ๊ฐ์ ์ถ์ํ ๋ ์ด์ด๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ฝ๋๊ฐ ํน์ ๋ก๊น
ํ๋ ์์ํฌ์ ์ข
์๋์ง ์๋๋ก ํฉ๋๋ค.
- ์ด๋ฅผ ํตํด ์ ์ฐํ ๋ก๊น ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ง๋๋ค.
2๏ธโฃ logback
-
'logback'
์ Java ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋๋ ๊ณ ์ฑ๋ฅ ๋ก๊น ํ๋ ์์ํฌ๋ก, slf4j์ ๊ถ์ฅ ๊ตฌํ์ฒด ์ค ํ๋์ ๋๋ค. -
'logback'
์ slf4j๋ฅผ ํตํด ์ ๊ทผํ ์ ์์ผ๋ฉฐ, ๋ฐ์ด๋ ์ฑ๋ฅ๊ณผ ์ ์ฐํ ์ค์ , ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ฒ์ด ํน์ง์ ๋๋ค.
1๏ธโฃ logback์ ์ฃผ์ ๊ตฌ์ฑ ์์.
-
-
Logback Classic
- slf4j์ ์ง์ ํตํฉ๋๋ logback์ ํต์ฌ ๋ชจ๋์ ๋๋ค.
-
'Logback Classic'
์ Java ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ก๊น ๊ธฐ๋ฅ์ ์ํํ๋ฉฐ, ๋ค์ํ ๋ก๊ทธ ๋ ๋ฒจ(INFO, DEBUG, WARN, ERROR ๋ฑ)์ ์ง์ํฉ๋๋ค.
-
Logback Classic
-
-
Logback Core
- Logback Classic๊ณผ Logback Access(์น ์ ํ๋ฆฌ์ผ์ด์ ์ฉ)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ผ๋ฐ์ ์ธ ๋ก๊น ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
-
'Logback Core'
๋ Appender, Layout, Filter ๋ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์๋ฅผ ํฌํจํฉ๋๋ค.
-
Logback Core
-
-
Logback Access
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ HTTP ์์ฒญ๊ณผ ์๋ต์ ๋ก๊น ํ ์ ์๋๋ก ์ง์ํ๋ ๋ชจ๋์ ๋๋ค.
- ์ฃผ๋ก Java Servlet ํ๊ฒฝ์์ ์ฌ์ฉ๋ฉ๋๋ค.
-
Logback Access
3๏ธโฃ logback์ ํน์ง.
-
-
๋์ ์ฑ๋ฅ
-
'logback'
์ ๋น ๋ฅธ ๋ก๊น ์ฑ๋ฅ์ ์ ๊ณตํ๋ฉฐ, ํนํ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํจ๊ณผ์ ์ ๋๋ค.
-
-
๋์ ์ฑ๋ฅ
-
-
์ ์ฐํ ๊ตฌ์ฑ
-
'logback'
์ XML ๋๋ Groovy ์คํฌ๋ฆฝํธ๋ก ๋ก๊น ์ค์ ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
- ์ด๋ฅผ ํตํด ๋ค์ํ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ก๊น ๋์์ ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค.
-
-
์ ์ฐํ ๊ตฌ์ฑ
-
-
์กฐ๊ฑด๋ถ ๋ก๊น
-
'logback'
์ ํน์ ์กฐ๊ฑด์์๋ง ๋ก๊น ์ ์ํํ๋๋ก ์ค์ ํ ์ ์์ด, ๋ถํ์ํ ๋ก๊ทธ ๊ธฐ๋ก์ ์ค์ด๊ณ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค.
-
-
์กฐ๊ฑด๋ถ ๋ก๊น
-
-
์ด์ ๋ก๊ทธ ํ๋ ์์ํฌ์์ ํธํ์ฑ
-
'logback'
์ ๊ธฐ์กด์'Log4j'
์ค์ ํ์ผ์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ, ๊ธฐ์กด'Log4j'
์ฌ์ฉ์๊ฐ ์ฝ๊ฒ'logback'
์ผ๋ก ์ ํํ ์ ์๋๋ก ๋์ต๋๋ค.
-
-
์ด์ ๋ก๊ทธ ํ๋ ์์ํฌ์์ ํธํ์ฑ
-
-
๋ค์ํ ์ถ๋ ฅ ํ์
-
'logback'
์ ์ฝ์, ํ์ผ, ์๊ฒฉ ์๋ฒ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ ๋ค์ํ ์ถ๋ ฅ ๋์์ผ๋ก ๋ก๊ทธ๋ฅผ ๊ธฐ๋กํ ์ ์์ผ๋ฉฐ, ์ถ๋ ฅ ํ์์ ์์ ๋กญ๊ฒ ์ ์ํ ์ ์์ต๋๋ค.
-
-
๋ค์ํ ์ถ๋ ฅ ํ์
4๏ธโฃ logback ์ฌ์ฉ ์์ .
<configuration>
<!-- ์ฝ์์ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ๋ Appender -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- ํ์ผ์ ๋ก๊ทธ๋ฅผ ๊ธฐ๋กํ๋ Appender -->
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>mylog.log</file>
<append>true</append>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- ๋ฃจํธ ๋ก๊ฑฐ ์ค์ -->
<root level="debug">
<appender-ref ref="STDOUT" />
<appender-red red="FILE" />
</root>
</configuration>
- ์ด ์์๋ ์ฝ์๊ณผ ํ์ผ์ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ๋๋ก ์ค์ ํ๋ ๊ฐ๋จํ ์์์
๋๋ค.
- logback์ ์ด์ธ์๋ ๋ณต์กํ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ ์ ์๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์์ต๋๋ค.
โ๏ธ ์์ฝ.
- logback์ Java ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋๋ ๊ณ ์ฑ๋ฅ ๋ก๊น ํ๋ ์์ํฌ๋ก, slf4j์ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค.
- logback์ ์ ์ฐํ ์ค์ ๊ณผ ๋์ ์ฑ๋ฅ, ๋ค์ํ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.