[Spring 3-1] Logger 객체 - 로그 이벤트 발생

임승현·2023년 2월 10일

Spring

목록 보기
3/46

※ src/main/java 폴더에 xyz.itwill00.log 패키지 생성 → HelloWorld 클래스 생성

🐧Logger 객체 - 로그 이벤트 발생

❌Logger 객체 사용 X

📃HelloWorld.java

※ xyz.itwill00.log 패키지에 HelloWorld.java 클래스 생성

package xyz.itwill00.log;
//
public class HelloWorld {
	public String hello(String name) {
		System.out.println("HelloWorld 클래스의 hello 메소드 - 시작");
		String message=name+"님, 안녕하세요.";
		System.out.println("HelloWorld 클래스의 hello 메소드 - 종료");
		return message;
	}
}

📃HelloWorldApp.java

※ xyz.itwill00.log 패키지에 HelloWorldApp.java 클래스 생성

package xyz.itwill00.log;
//
public class HelloWorldApp {
	public static void main(String[] args) {
		System.out.println("HelloWorldApp 클래스의 main 메소드 - 시작");
		HelloWorld hw=new HelloWorld();
		String message=hw.hello("홍길동");
		System.out.println("message = "+message);
		System.out.println("HelloWorldApp 클래스의 main 메소드 - 종료");
	}
}

⭕Logger 객체 사용

📃LogHelloWorld.java

※ xyz.itwill00.log 패키지에 LogHelloWorld.java 클래스 생성

package xyz.itwill00.log;
//
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
//
public class LogHelloWorld {
	private static final Logger logger=LoggerFactory.getLogger(LogHelloWorld.class);
	//
	public String hello(String name) {
		logger.info("시작");
		String message=name+"님, 안녕하세요.";
		logger.info("종료");
		return message;
	}
}

📌Logger 객체 : 로그 이벤트를 발생하기 위한 객체
📌LoggerFactory 클래스 : Logger 객체를 생성하여 제공하기 위한 클래스
📌LoggerFactory.getLogger(Class <?> clazz) : 메모리에 저장된 클래스(Class 객체 - Clazz)를 전달받아 해당 클래스에서 로그 이벤트를 발생할 수 있는 Logger 객체를 생성하여 반환하는 메소드
📌Logger.info(String message) : Logger 객체로 INFO 레벨의 로그 이벤트를 발생하는 메소드
→ 매개변수에 로그 구현체로 기록된 로그 메세지 전달

📃LogHelloWorldApp.java

※ xyz.itwill00.log 패키지에 LogHelloWorldApp.java 클래스 생성

package xyz.itwill00.log;
//
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
//
public class LogHelloWorldApp {
	//Logger 객체 : 로그 이벤트를 발생하기 위한 객체
	//LoggerFactory 클래스 : Logger 객체를 생성하여 제공하기 위한 클래스
	//LoggerFactory.getLogger(Class <T> clazz) : 메모리에 저장된 클래스(Class 객체 - Clazz)를 전달받아 해당 클래스에서 
	// 로그 이벤트를 발생할 수 있는 Logger 객체를 생성하여 반환하는 메소드
	private static final Logger logger=LoggerFactory.getLogger(LogHelloWorldApp.class);
	//
	public static void main(String[] args) {
		//Logger.info(String message) : Logger 객체로 INFO 레벨의 로그 이벤트를 발생하는 메소드
		//→ 매개변수에 로그 구현체로 기록된 로그 메세지 전달
		logger.info("시작");
		LogHelloWorld hw=new LogHelloWorld();
		String message=hw.hello("홍길동");
		System.out.println("message = "+message);
		logger.info("종료");
	}
}

📃log4j.xml

<!-- LogHelloWorldApp.java 클래스에 로그 표시를 위한 코드 -->
<appender name="sample" class="org.apache.log4j.ConsoleAppender">
	<param name="Target" value="System.out" />
	<layout class="org.apache.log4j.PatternLayout">
		<param name="ConversionPattern" value="%c{1} 클래스의 %M 메소드 - %m%n" />
	</layout>
</appender>
<appender name="dailyLogFile" class="org.apache.log4j.DailyRollingFileAppender">
	<param name="File" value="dailyLog"/>
	<param name="DatePattern" value=".yyyy-MM-dd"/>
	<layout class="org.apache.log4j.PatternLayout">
		<param name="ConversionPattern" value="[%d{HH:mm:ss}]%-5p : %c - %m%n" />
	</layout>
</appender>

📌additivity 속성 : false 또는 true(기본) 중 하나를 속성값으로 설정
→ 속성값이 [false]인 경우 root 엘리먼트에 로그 구현체(Appender)를 포함하지 않도록 동작
→ 속성값이 [true]인 경우 root 엘리먼트에 로그 구현체(Appender)를 포함되도록 동작

<!-- LogHelloWorldApp.java 클래스에 로그 표시를 위한 코드 -->
<logger name="xyz.itwill00.log" additivity="false">
	<level value="info"/>
	<appender-ref ref="sample"/>
	<appender-ref ref="dailyLogFile"/>
</logger>

0개의 댓글