잉여로운 log4j2 설정

뿌엑·2022년 7월 4일
0
post-thumbnail

이는 Java 진영의 로깅 프레임워크라 한다.
log4j도 있는데 이는 구버전이라 업데이트가 되지 않는다고 함.

테스트를 위해 스프링 새 프로젝트를 하나 생성한다.


무쓸모한 루트 패키지 설정를 때리뿐다~


장대하게 톰캣을 실행해보니~ 여크시!
옛날에 학원에서부터 봤던 ?? ?? ???(큿소~~~!)

web.xml에 대충 웹에서 긁어온 뻘코드를 박아주고,,

<filter>
	<filter-name>encodingFilter</filter-name>
	<filter-class>org.springframework.web.filter.CharacterEncodingFilter
	</filter-class>
	<init-param>
		<param-name>encoding</param-name>
		<param-value>UTF-8</param-value>
	</init-param>
	<init-param>
		<param-name>forceEncoding</param-name>
		<param-value>true</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>encodingFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

일단 log4j2를 써야 하니 대충 공홈에서 사용법을 읽어본다.

https://logging.apache.org/log4j/2.x/

근데... 근데...

몰라!! 모른다고!

영어라곤 언제 봤는지도 깜깜한 수능 이후론 본적도 없는 난 늘 그랬듯 한국어 문서를 찾는다(블로그 서치ㅋㅋ)

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
	<Properties>
		<Property name="LOG_PATTERN">%d{HH:mm:ss.SSS} [%p] --- [%10.50t]
			%-1.50c{1.}.%-1.20M:%L: %m%n%ex</Property>
	</Properties>

	<Appenders>
		<Console name="Console_Appender" target="SYSTEM_OUT">
			<PatternLayout pattern="${LOG_PATTERN}" />
		</Console>
	</Appenders>

	<Loggers>
		<Root level="DEBUG" additivity="false">
			<AppenderRef ref="Console_Appender" />
		</Root>

		<Logger name="org.springframework" level="ERROR"
			additivity="false">
			<AppenderRef ref="Console_Appender" />
		</Logger>

		<Logger name="com.filmsus.myapp" level="INFO"
			additivity="false">
			<AppenderRef ref="Console_Appender" />
		</Logger>

		<logger name="log4jdbc.log4j2" level="ERROR" additivity="false">
			<MarkerFilter marker="LOG4JDBC_OTHER" onMatch="DENY"
				onMismatch="NEUTRAL" />
			<appender-ref ref="Console_Appender" />
		</logger>
	</Loggers>
</Configuration>

log4j2 설정파일
Root level에 적힌 로그레벨을 출력한다.

로그레벨은 ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF 순이다.
ALL은 전체, OFF는 아무 것도 출력하지 않는 것.

WARN을 로그 레벨로 지정하면 그 아래인 WARN, ERROR, FATAL 로그가 출력된다.

package com.mycompany.myapp;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class HomeController {
	private Logger logger = LogManager.getLogger(HomeController.class);
	
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home(Locale locale, Model model) {
		
		logger.debug("[debug] log");
		logger.info("[info] log");
		logger.warn("[warn] log");
		logger.error("[error] log");
		
		
		Date date = new Date();
		DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
		
		String formattedDate = dateFormat.format(date);
		model.addAttribute("serverTime", formattedDate );
		
		return "home";
	}
}

그래.. 우리에게 익숙하고도 아름다운 HomeController 내부에 선언된 4개의 로그가 보인다.

22:39:02.481 [DEBUG] --- [http-nio-8080-exec-1]
			c.m.m.HomeController.home:30: [debug] log
22:39:02.495 [INFO] --- [http-nio-8080-exec-1]
			c.m.m.HomeController.home:31: [info] log
22:39:02.495 [WARN] --- [http-nio-8080-exec-1]
			c.m.m.HomeController.home:32: [warn] log
22:39:02.495 [ERROR] --- [http-nio-8080-exec-1]
			c.m.m.HomeController.home:33: [error] log

일단 여기까지..!

기열!!

4개의 댓글

comment-user-thumbnail
2022년 7월 6일

잘 보고갑니다~

1개의 답글
comment-user-thumbnail
2022년 7월 13일

덕분에 설정 쉽게 했어요 감사합니당

1개의 답글