이는 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
일단 여기까지..!
기열!!
잘 보고갑니다~