2.1 ์ฒซ ๋ฒ์งธ ๋ก๊ฑฐ - log4j
์ด๋ฏธ ์๊ณ ์๋ฏ์ด ๋ก๊ทธ์ ํ์คํ ๋ฆฌ๋ System.err.println()
๋ ์ฝ๋๋ฅผ ์ฝ์์ ์ถ๋ ฅํ๋ ๊ฒ์ผ๋ก ์์๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด Intellij IDEA๋ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ์์ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ํ์ํฉ๋๋ค. ๊ทธ๋ฌ๋์ด ์ต์
์๋ ์ค์ ์ด ์์ผ๋ฏ๋ก ๊ณ์ ์งํํ๊ฒ ์ต๋๋ค.
์ต์ด์ด์ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๋ก๊ฑฐ๋ Log4j
. ํ๋ฅญํ๊ณ ๊ณ ๋๋ก ์ฌ์ฉ์ ์ ์ ๊ฐ๋ฅํ ์๋ฃจ์
์ด์์ต๋๋ค. ๋ค์ํ ์ํฉ์ผ๋ก ์ธํด ์ด ๊ฒฐ์ ์ JDK์ ์ ๋ฌ๋์ง ์์๊ณ ์ ์ฒด ์ปค๋ฎค๋ํฐ๋ฅผ ํฌ๊ฒ ํ๋๊ฒ ํ์ต๋๋ค.
์ด ๋ก๊ฑฐ๋ ๋จ์ํ ๋ก๊น ๋ง ํ๋ ๊ฒ์ด ์๋๋ผ ํ๋ก๊ทธ๋๋จธ๊ฐ ํ๋ก๊ทธ๋๋จธ๋ฅผ ์ํด ๋ง๋ค์ด์ ๋ก๊น ๊ณผ ๊ด๋ จํ์ฌ ๋์์์ด ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋๋ก ํด์ฃผ์์ต๋๋ค.
์ด๋ฏธ ์๊ณ ์๋ฏ์ด ๋ก๊ทธ๋ ๋ง์ง๋ง์ ์์ฑ๋๋ฏ๋ก ์ด๋ค ์ฌ๋์ด ๋ก๊ทธ๋ฅผ ์ฝ๊ณ ํ๋ก๊ทธ๋จ ์๋ ์ค์ ๋ฐ์ํ ์ผ(์์ํ ๋๋ก ๋ฌด์์ด ์ธ์ ์๋ชป๋์๋์ง)์ ์ดํดํ๋ ค๊ณ ์๋ํฉ๋๋ค.
log4j
์ด๋ฅผ ์ํด ์ธ ๊ฐ์ง๊ฐ ์์์ต๋๋ค .
- ์๋ธํจํค์ง ๋ก๊น ;
- ์ดํ๋ ์ธํธ(๊ฒฐ๊ณผ);
- ํซ ๋ฆฌ๋ก๋ ์ค์ .
log4j
์ฒซ์งธ, ํ ํจํค์ง์์๋ ๋ก๊ทธ์ธ์ ํ์ฑํํ๊ณ ๋ค๋ฅธ ํจํค์ง์์๋ ๋นํ์ฑํํ๋ ๋ฐฉ์์ผ๋ก ์ค์ ์ ์์ฑํ ์ ์์ต๋๋ค. com.codegym.server
์๋ฅผ ๋ค์ด ์์๋ ๋ก๊ทธ์ธ์ ํ์ฑํ ํ๊ณ ์์๋ ๋นํ์ฑํ ํ ์ ์์์ต๋๋ค com.codegym.server.payment
. ์ด๋ฅผ ํตํด ๋ก๊ทธ์์ ๋ถํ์ํ ์ ๋ณด๋ฅผ ๋น ๋ฅด๊ฒ ์ ๊ฑฐํ ์ ์์์ต๋๋ค.
๋์งธ, log4j
ํ ๋ฒ์ ์ฌ๋ฌ ๋ก๊ทธ ํ์ผ์ ๋ก๊น
๊ฒฐ๊ณผ๋ฅผ ์ธ ์ ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ๋ํ ์ถ๋ ฅ์ ๊ฐ๋ณ์ ์ผ๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ ํ์ผ์๋ ์ฌ๊ฐํ ์ค๋ฅ์ ๋ํ ์ ๋ณด๋ง ๊ธฐ๋กํ ์ ์์๊ณ , ๋ค๋ฅธ ํ์ผ์๋ ํน์ ๋ชจ๋์ ๋ก๊ทธ, ์ธ ๋ฒ์งธ ํ์ผ์๋ ํน์ ์๊ฐ ๋์์ ๋ก๊ทธ๋ฅผ ๊ธฐ๋กํ ์ ์์์ต๋๋ค.
๋ฐ๋ผ์ ๊ฐ ๋ก๊ทธ ํ์ผ์ ํน์ ์ ํ์ ์์ ๋ฌธ์ ์ ๋ง๊ฒ ์กฐ์ ๋์์ต๋๋ค. ์ด๊ฒ์ ๊ธฐ๊ฐ๋ฐ์ดํธ ๋ก๊ทธ ํ์ผ์ ์๋์ผ๋ก ์ดํด๋ณด๋ ๊ฒ์ ์ข์ํ์ง ์๋ ํ๋ก๊ทธ๋๋จธ์ ์ถ์ ํฌ๊ฒ ๋จ์ํํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ์ธ ๋ฒ์งธ๋ก log4j
ํ๋ก๊ทธ๋จ์ ๋ค์ ์์ํ์ง ์๊ณ ๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ๋ก๊ทธ ์ค์ ์ ์ง์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ํน์ ์ค๋ฅ์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ฐพ๊ธฐ ์ํด ๋ก๊ทธ ์์
์ ์์ ํด์ผ ํ ๋ ๋งค์ฐ ํธ๋ฆฌํ์ต๋๋ค.
์ค์ํ! ๋ก๊ทธ์๋ 1.2.x์ 2.xx์ ๋ ๊ฐ์ง ๋ฒ์ log4j
์ด ์์ผ๋ฉฐ ์๋ก ํธํ ๋์ง ์์ต๋๋ค .
๋ค์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๊ฑฐ๋ฅผ ํ๋ก์ ํธ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.17.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.2</version>
</dependency>
</dependencies>
2.2 ์ต์ด์ ๊ณต์ ๋ก๊ฑฐ - 7์: java.util.logging
Java ์ปค๋ฎค๋ํฐ์ ๋ก๊ฑฐ ๋๋ฌผ์์ด ๋ฑ์ฅํ ํ ๊ฐ๋ฐ์๋ JDK
๋ชจ๋๊ฐ ์ฌ์ฉํ ํ๋์ ํ์ค ๋ก๊ฑฐ๋ฅผ ๋ง๋ค๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๋ค์์ ๋ก๊ฑฐ๊ฐ ๋ํ๋ ๋ฐฉ์ ์
๋๋ค JUL
.java.util.logging
log4j
๊ทธ๋ฌ๋ ๊ฐ๋ฐ ๊ณผ์ ์์ ๋ก๊ฑฐ ์์ฑ์๋ ๊ฐ ์๋๋ผ ๊ฐ๋ฐ์ ์ํฅ์ ์ค IBM์ ๋ก๊ฑฐ ๋ณํ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ต๋๋ค . ์ข์ ์์์ ๋ก๊ฑฐ๊ฐ JUL
ํฌํจ๋์ด ์๋ค๋ ๊ฒ์
๋๋ค JDK
. ๋์ ์์์ ์ฌ์ฉํ๋ ์ฌ๋์ด ๊ฑฐ์ ์๋ค๋ ๊ฒ์
๋๋ค.
๊ฐ๋ฐ์๋ "๋ ๋ค๋ฅธ ๋ณดํธ์ ์ธ ํ์ค"์JUL
๋ง๋ค์์ ๋ฟ๋ง ์๋๋ผ ๋น์ ์ธ๊ธฐ ์๋ ๋ก๊ฑฐ๊ฐ ํ์ฉํ ๊ฒ๊ณผ๋ ๋ค๋ฅธ ์์ฒด ๋ก๊น
์์ค๋ ๋ง๋ค์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ํฐ ๋ฌธ์ ์์ต๋๋ค. ๊ฒฐ๊ตญ ์ ํ์ Java
์ข
์ข
๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์์ง๋๋ฉฐ ์ด๋ฌํ ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ์์ฒด ๋ก๊ฑฐ๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ํ๋ฆฌ์ผ์ด์
์ ์๋ ๋ชจ๋ ๋ก๊ฑฐ๋ฅผ ๊ตฌ์ฑํด์ผ ํ์ต๋๋ค.
๋ก๊ฑฐ ์์ฒด๋ ๊ฝค ์ข์ง๋ง. ๋ก๊ฑฐ ์์ฑ์ ๊ฑฐ์ ๋์ผํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ๋ค์์ ๊ฐ์ ธ์์ผ ํฉ๋๋ค.
java.util.logging.Logger log = java.util.logging.Logger.getLogger(LoggingJul.class.getName());
๋ก๊น ์ด ์ด๋์ ์ค๋์ง ์๊ธฐ ์ํด ํด๋์ค ์ด๋ฆ์ด ํน๋ณํ ์ ๋ฌ๋ฉ๋๋ค.
๋ฆด๋ฆฌ์ค์์๋ง ๊ฐ๋ฐ์๋ ์ค์ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ผ๋ฉฐ ๊ทธ ํ์๋ JUL
์ฌ์ฉํ๊ธฐ๊ฐ ์ ๋ง ํธ๋ฆฌํฉ๋๋ค. ๊ทธ ์ ์๋ ์ผ์ข
์ ์ด๋ฅ ๋ก๊ฑฐ์์ต๋๋ค.
์ด ๋ก๊ฑฐ๋ ๋๋ค ์๊ณผ ์ง์ฐ ํ๊ฐ๋ ์ง์ํฉ๋๋ค. ๋ก ์์ํ๋ฉด Java 8
ํต๊ณผํ ์ ์์ต๋๋ค Supplier<String>
. ์ด๋ ๊ฒ ํ๋ฉด ์ด์ ๊ณผ ๊ฐ์ด ๋งค๋ฒ์ด ์๋๋ผ ์ค์ ๋ก ํ์ํ ์๊ฐ์๋ง ๋ฌธ์์ด์ ์ฝ๊ณ ์์ฑํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ธ์๊ฐ ์๋ ๋ฉ์๋๋ Supplier<String> msgSupplier
๋ค์๊ณผ ๊ฐ์ต๋๋ค.
public void info(Supplier msgSupplier) {
log(Level.INFO, msgSupplier);
}
2.3 ์ฒซ ๋ฒ์งธ ๋ก๊ฑฐ ๋ํผ - JCL: jakarta commons ๋ก๊น
์ค๋ซ๋์ ๋ก๊ฑฐ๋ค ์ฌ์ด์ ๋จ์ผ ํ์ค์ด ์์๊ณ JUL
ํ๋๊ฐ ๋์ด์ผ ํ์ง๋ง ๋ ๋๋นด์ต๋๋ค log4j
. ๊ทธ๋์ ๋จ์ผ ํ์ค์ ๋ํ๋์ง ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ๊ฐ ๋์ผ ํด์ง๊ณ ์ถ์ดํ๋ ๋ก๊ฑฐ ๋๋ฌผ์ ์ ์ฒด๊ฐ ๋ํ๋ฌ์ต๋๋ค.
๊ทธ๋ฌ๋ ์ผ๋ฐ Java ๊ฐ๋ฐ์๋ ๊ฑฐ์ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์ฒด ๋ก๊ฑฐ๊ฐ ์๊ณ ํน๋ณํ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑํด์ผ ํ๋ ์ ์ ์ข์ํ์ง ์์์ต๋๋ค. ๋ฐ๋ผ์ ์ปค๋ฎค๋ํฐ๋ ๋ค๋ฅธ ๋ก๊ฑฐ ์์ ํน์ ๋ํผ๋ฅผ ๋ง๋ค๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.JCL: jakarta commons logging
๊ทธ๋ฆฌ๊ณ ๋ค์, ๋ฆฌ๋๊ฐ ๋๊ธฐ ์ํด ๋ง๋ค์ด์ง ํ๋ก์ ํธ๋ ํ๋๊ฐ ๋์ง ์์์ต๋๋ค. ์น์๋ฅผ ๋ง๋ค ์๋ ์๊ณ ์น์๊ฐ ๋ ์๋ง ์์ต๋๋ค. ๊ธฐ๋ฅ์ด JCL
๋งค์ฐ ์ด์
ํ๊ณ ์๋ฌด๋ ์ฌ์ฉํ๊ณ ์ถ์ดํ์ง ์์์ต๋๋ค. JUL
๋ชจ๋ ๋ก๊ฑฐ๋ฅผ ๋์ฒดํ๋๋ก ์ค๊ณ๋ ๋ก๊ฑฐ๋ ์ฌ์ฉ๋์ง ์์ ๊ฒ๊ณผ ๊ฐ์ ์ด๋ช
์ ๋ง์ดํ์ต๋๋ค .
Apache ์ปค๋ฎค๋ํฐ์์ ์ถ์ํ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ถ๊ฐ๋์์ง๋ง ๋ก๊ฑฐ์ ๋๋ฌผ์์ ์ฑ์ฅํ์ต๋๋ค.
2.4 ์ฒซ ๋ฒ์งธ ๋ง์ง๋ง ๋ก๊ฑฐ - ๋ก๊ทธ๋ฐฑ
ํ์ง๋ง ๊ทธ๊ฒ ๋ค๊ฐ ์๋๋๋ค. ๊ฐ๋ฐ์๋ log4j
์์ ์ด ๊ฐ์ฅ ๋๋ํ๋ค๊ณ ํ๋จํ๊ณ (๊ฒฐ๊ตญ ๋๋ถ๋ถ์ ์ฌ๋๋ค์ด ๊ทธ์ ๋ก๊ฑฐ๋ฅผ ์ฌ์ฉํ์ต๋๋ค) log4j
๋ค๋ฅธ ๋ก๊ฑฐ์ ์ฅ์ ์ ๊ฒฐํฉํ ์๋ก์ด ๊ฐ์ ๋ ๋ก๊ฑฐ๋ฅผ ์์ฑํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
์ ๋ก๊ฑฐ๋ Logback
. ๋ชจ๋๊ฐ ์ฌ์ฉํ ๋ฏธ๋์ ๋จ์ผ ๋ก๊ฑฐ๊ฐ ๋ ๊ฒ์ผ๋ก ์์๋๋ ๊ฒ์ ๋ฐ๋ก ์ด ๋ก๊ฑฐ์์ต๋๋ค. ์์์ ๋์ผํ ์์ด๋์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ต๋๋ค log4j
.
๋ค์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๋ก๊ฑฐ๋ฅผ ํ๋ก์ ํธ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.6</version>
</dependency>
์ฐจ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค Logback
.
- ํฅ์๋ ์ฑ๋ฅ;
- ๊ธฐ๋ณธ ์ง์ ์ถ๊ฐ
slf4j
; - ํ์ฅ๋ ํํฐ๋ง ์ต์ .
์ด ๋ก๊ฑฐ์ ๋ ๋ค๋ฅธ ์ฅ์ ์ ๋งค์ฐ ์ข์ ๊ธฐ๋ณธ ์ค์ ์ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ก๊ฑฐ์์ ๋ฌด์ธ๊ฐ๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ ๊ฒฝ์ฐ์๋ง ๋ก๊ฑฐ๋ฅผ ๊ตฌ์ฑํด์ผ ํ์ต๋๋ค. ๋ํ ์ค์ ํ์ผ์ ๊ธฐ์
์ํํธ์จ์ด์ ๋ ์ ์ ์ฉ๋์์ต๋๋ค. ๋ชจ๋ ๊ตฌ์ฑ์ด xml/
.
๊ธฐ๋ณธ์ ์ผ๋ก Logback
์ค์ ์ด ํ์ํ์ง ์์ผ๋ฉฐ ์์ค ์ด์์ ๋ชจ๋ ๋ก๊ทธ๋ฅผ ๊ธฐ๋กํฉ๋๋ค DEBUG
. ๋ค๋ฅธ ๋์์ด ํ์ํ ๊ฒฝ์ฐ xml
๊ตฌ์ฑ์ ํตํด ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>app.log</file>
<encoder>
<pattern>%d{HH:mm:ss,SSS} %-5p [%c] - %m%n</pattern>
</encoder>
</appender>
<logger name="org.hibernate.SQL" level="DEBUG" />
<logger name="org.hibernate.type.descriptor.sql" level="TRACE" />
<root level="info">
<appender-ref ref="FILE" />
</root>
</configuration>
2.5 ์ต์ ๋ฒ์ฉ ๋ก๊ฑฐ - SLF4J: Java์ฉ ๋จ์ ๋ก๊น ํ์ฌ๋
ํฉ๊ธ๋ฅ ์ ์ฐพ๋๋ฐ ์ผ๋ง๋ ๊ฑธ๋ฆด๊น์...
2006๋
์ ์ ์์ ์ค ํ ๋ช
์ด log4j
ํ๋ก์ ํธ๋ฅผ ๋ ๋ ๋ฒ์ฉ ๋ก๊ฑฐ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๋ค์ ์๋ํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฒ์๋ ์๋ก์ด ๋ก๊ฑฐ๊ฐ ์๋๋ผ ์๋ก ๋ค๋ฅธ ๋ก๊ฑฐ๊ฐ ํจ๊ป ์ํธ ์์ฉํ ์ ์๋๋ก ํ๋ ์๋ก์ด ๋ฒ์ฉ ํ์ค(๋ํผ)์ด์์ต๋๋ค.
์ด ๋ก๊ฑฐ๋ , , ๋ฅผ slf4j โ Simple Logging Facade for Java
๋๋ฌ์ผ ๋ํผ์์ต๋๋ค . ์ด ๋ก๊ฑฐ๋ ๋ก๊ฑฐ ๋๋ฌผ์์ ๊ด๋ฆฌํ๋ ์ค์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ฌ ๋ชจ๋๊ฐ ์ฆ์ ์ฌ์ฉํ๊ธฐ ์์ํ์ต๋๋ค.log4j
JUL
common-loggins and logback
์ฐ๋ฆฌ๋ ์ค์ค๋ก ๋ง๋ ๋ฌธ์ ๋ฅผ ์์ ์ ์ผ๋ก ํด๊ฒฐํฉ๋๋ค. ๋ณด์๋ค์ํผ ๋ํผ ์์ ๋ํผ๋ฅผ ์์ฑํ ์ง์ ๊น์ง ์งํ๋์์ต๋๋ค...
๋ฉ ์์ฒด๋ ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
API
, ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ๋ฉ๋๋ค.- ๊ฐ ๋ก๊ฑฐ์ ๋ํด ๋ณ๋์ ์ข ์์ฑ์ผ๋ก ์ถ๊ฐ๋๋ ๊ตฌํ์ ๋๋ค.
๋ค์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๊ฑฐ๋ฅผ ํ๋ก์ ํธ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.17.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.17.2</version>
</dependency>
์ฌ๋ฐ๋ฅธ ๊ตฌํ์ ์ฐ๊ฒฐํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํ๋ฉฐ ๊ทธ๊ฒ ์ ๋ถ์ ๋๋ค. ์ ์ฒด ํ๋ก์ ํธ๊ฐ ํจ๊ป ์๋ํฉ๋๋ค.
2.6 slf4j์ ์ต์ ํ
Slf4j
๋ก๊น
์ ์ํ ๋ฌธ์์ด ํ์ ๊ณผ ๊ฐ์ ๋ชจ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค . ๊ทธ ์ ์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ๋ก๊ทธ์ ๋ฉ์์ง๋ฅผ ์ธ์ํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
log.debug("User " + user + " connected from " + request.getRemoteAddr());
์ด ์ฝ๋์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์์ฉ ํ๋ก๊ทธ๋จ์ด ์๋ํ๊ณ production
๋ก๊ทธ์ ์๋ฌด๊ฒ๋ ์ฐ์ง ์๋๋ค๊ณ ๊ฐ์ DEBUG-messages
ํ์ง๋ง ๋ฉ์๋๋ log.debug()
๊ณ์ ํธ์ถ๋๋ฉฐ ํธ์ถ ์ ๋ค์ ๋ฉ์๋๋ ํธ์ถ๋ฉ๋๋ค.
user.toString();
request.getRemoteAddr();
์ด๋ฌํ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์๋๊ฐ ๋๋ ค์ง๋๋ค. ํด๋น ํธ์ถ์ ๋๋ฒ๊น ์ค์๋ง ํ์ํ์ง๋ง ์ด์จ๋ ํธ์ถ๋ฉ๋๋ค.
๋ ผ๋ฆฌ์ ๊ด์ ์์ ์ด ๋ฌธ์ ๋ ๋ก๊น ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฒด์์ ํด๊ฒฐํด์ผ ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ log4j์ ์ฒซ ๋ฒ์งธ ๋ฒ์ ์์ ์๋ฃจ์ ์ด ๋ํ๋ฌ์ต๋๋ค.
if (log.isDebugEnabled()) {
log.debug("User " + user + " connected from " + request.getRemoteAddr());
}
๋ก๊ทธ์ ๋ํ ํ ์ค ๋์ ์ด์ ์ธ ์ค์ ์์ฑํด์ผ ํ์ต๋๋ค. ์ฝ๋์ ๊ฐ๋
์ฑ์ ๊ทน์ ์ผ๋ก ์
ํ์ํค๊ณ log4j
.
๋ก๊ฑฐ๋ slf4j
์ค๋งํธ ๋ก๊น
์ ์ ๊ณตํ์ฌ ์ํฉ์ ์ฝ๊ฐ ๊ฐ์ ํ ์ ์์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ์๊ฒผ์ต๋๋ค.
log.debug("User {} connected from {}", user, request.getRemoteAddr());
์ฌ๊ธฐ์ ๋ {}
๋ฉ์๋์ ์ ๋ฌ๋ ์ธ์์ ์ฝ์
์ ๋ํ๋
๋๋ค. ์ฆ, ์ฒซ ๋ฒ์งธ๋ {}
์ฌ์ฉ์์ ํด๋นํ๊ณ ๋ ๋ฒ์งธ๋ {}
์ ํด๋นํฉ๋๋ค request.getRemoteAddr()
.
์ด๋ฌํ ๋งค๊ฐ๋ณ์๋ ๋ก๊น ์์ค์ด ๋ก๊น ์ ํ์ฉํ๋ ๊ฒฝ์ฐ์๋ง ๋จ์ผ ๋ฉ์์ง๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค. ์๋ฒฝํ์ง๋ ์์ง๋ง ๋ค๋ฅธ ๋ชจ๋ ์ต์ ๋ณด๋ค ๋ซ์ต๋๋ค.
๊ทธ ํ SLF4J
์ธ๊ธฐ๊ฐ ๊ธ๊ฒฉํ ๋์์ง๊ธฐ ์์ํ์ผ๋ฉฐ ํ์ฌ ์ด๊ฒ์ด ์ต์์ ์๋ฃจ์
์
๋๋ค.
๋ฐ๋ผ์ ๋ฒ๋ค์ ์๋ก ๋ค์ด ๋ก๊น
์ ๊ณ ๋ คํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค slf4j-log4j12
.
GO TO FULL VERSION