2월 03, 2024

[Java Log 출력하는 방법] org.slf4j.Logger 사용법

 Java에서 System.out.println을 사용하지 않고 Log를 출력하고 싶을 때 사용할 수 있는 방법에 대해 알아보자. 아래와 같은 스텝으로 코드를 추가해주면 어렵지 않게 로그를 출력할 수 있다. 


1. build.gradle에 dependency 추가

dependencies 부분에 

implementation 'ch.qos.logback:logback-classic:1.2.3'


를 추가해주면 된다. 만약 Java 소스에서 import org.slf4j.Logger가 불가능하다면 dependency 에 추가가 되어 있지 않은 것이니 아래를 참고하여 추가해주자. 


전체 build.gradle 소스는 아래와 같다. 


plugins {
id 'java'
}

group = 'org.example'
version = '1.0-SNAPSHOT'

repositories {
mavenCentral()
}

dependencies {
implementation 'javax.servlet:javax.servlet-api:4.0.1'
implementation 'javax.servlet:jstl:1.2'

implementation 'ch.qos.logback:logback-classic:1.2.3'

testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
}

test {
useJUnitPlatform()
}

build.gradle에 원하는 implementation을 추가하여 소스에서 해당 Library를 사용하여 구현할 수 있다. 


gradle build를 한 뒤에 Intellij의 External Libraries 쪽에 들어가보면 우리가 build.gradle의 dependencies에서 추가해주었던 library가 들어가 있는 것을 확인할 수 있다. 



2. Java Class 내에 private static final로 Logger 추가하고 관련된 package import 해주기

public class LogTest {

private static final Logger log = LoggerFactory.getLogger(LogTest.class);

}

이런 식으로 해당 class의 이름을 getLogger의 parameter로 적어서 log를 private static final로 선선해준다. 


Logger와 LoggerFactory를 사용하기 위하여 import가 필요한데, intellij에서는 windows 기준 alt + insert를 누르면 추천을 해주니 적극 활용하자. 


import를 하면 

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


가장 상단에 위와 같이 org.slf4j.Logger와 org.slf4j.LoggerFactory가 import 된 것을 알 수 있다. 


3. 원하는 로그 출력하기

log.info("service started.");


이런 식으로 원하는 로그 또한 출력할 수 있다.


여기서는 log.info를 사용했지만 원하는 로그 레벨을 맞추어 출력할 수 있으니 이를 참고하면 된다. 로그 레벨 관련해서는 이전 포스팅에서 잘 설명을 해두었으니 아래 url를 참고하자. 

https://www.programmingstory.com/2023/09/java-logging-levels-log4j.html