<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>code-tycoon.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Wed, 25 Jan 2023 05:20:36 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>code-tycoon.log</title>
            <url>https://velog.velcdn.com/images/code-tycoon/profile/d4273d80-e27a-4c1a-85f0-419f06a70637/social_profile.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. code-tycoon.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/code-tycoon" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Java Logging - 1. Slf4j]]></title>
            <link>https://velog.io/@code-tycoon/1</link>
            <guid>https://velog.io/@code-tycoon/1</guid>
            <pubDate>Wed, 25 Jan 2023 05:20:36 GMT</pubDate>
            <description><![CDATA[<h2 id="slf4j란">Slf4j란?</h2>
<p>로깅 전략을 위한 첫번째 단계 여러 로깅 구현체의 추상화 전략 slf4j를 소개합니다.</p>
<h2 id="왜-사용해야-하는가">왜 사용해야 하는가?</h2>
<p>추상화 전략</p>
<h2 id="maven-repository">Maven Repository</h2>
<p><a href="https://mvnrepository.com/artifact/org.slf4j/slf4j-api" target="_blank">Slf4j Maven Repository</a></p>
<h2 id="시작하기">시작하기</h2>
<pre><code class="language-java">import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld {

  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    logger.info(&quot;Hello World&quot;);
  }
}</code></pre>
<h2 id="여러-구현체-대입하기">여러 구현체 대입하기</h2>
<p><img src="https://velog.velcdn.com/images/code-tycoon/post/5f36b13d-b8e4-4a4d-8d88-92b382880329/image.png" alt=""></p>
<h3 id="q-구현체-binding은-어떻게">Q. 구현체 binding은 어떻게?</h3>
<p>고맙게도 Slf4j는 단순히 Slf4j에서 지원하는 로깅 라이브러리를 추가해 주는 작업만으로 구현체를 설정 할 수 있습니다. 다음은 Slf4j에서 지원하는 로깅 구현체의 목록입니다. (2023. 01. 31. 기준)</p>
<ul>
<li>LOGBACK-CLASSIC 1.3.X (JAVAX EE)</li>
<li>LOGBACK-CLASSIC 1.4.X (JAKARTA EE)</li>
<li>RELOAD4J</li>
<li>LOG4J 1.2.X</li>
<li>JAVA.UTIL.LOGGING</li>
<li>SLF4J SIMPLE</li>
</ul>
<p>Javax EE와 Jakarta EE의 차이가 궁금하신 분들을 위해 삼성SDS에서 발간한 리포트를 추가합니다.
<a href="https://www.samsungsds.com/kr/insights/java_jakarta.html" target="_blank">Javax EE VS Jakarta EE</a></p>
<h3 id="q-만약-2가지-이상의-구현체가-프로젝트-내에-존재한다면">Q. 만약 2가지 이상의 구현체가 프로젝트 내에 존재한다면?</h3>
<h2 id="slf4j--spring-boot">Slf4j &amp; Spring-Boot</h2>
<p>기본적으로 Spring-Boot 프로젝트에는 Slf4j와 logback이 기본 로깅 전략으로 포함되어 있습니다. 만약 다른 구현체를 사용하고 싶다면 어떻게 사용할 수 있을까요?</p>
<ol>
<li>Maven 프로젝트
pom.xml에 exclude설정을 통해 logback 제거<pre><code class="language-xml"></code></pre>
</li>
</ol>
<pre><code>
2. Gradle 프로젝트
exclude설정을 통해 logback 제거
```groovy
</code></pre><h2 id="lombok-slf4j-annotation">Lombok Slf4j Annotation</h2>
<p>will generate</p>
<p>private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);</p>
<h3 id="참조">참조</h3>
<ul>
<li><a href="https://www.slf4j.org/manual.html" target="_blank">https://www.slf4j.org/manual.html</a></li>
<li><a href="https://projectlombok.org/api/lombok/extern/slf4j/Slf4j" target="_blank">https://projectlombok.org/api/lombok/extern/slf4j/Slf4j</a></li>
</ul>
]]></description>
        </item>
    </channel>
</rss>