Spring Framework log4j2 로그 설정하기
안녕하세요. YeopBox의 상큼한놈 입니다.
테스트/운영 서버의 로거 레벨을 다르게 두거나 일별/용량별로 로그 파일을 분리하거나 log4j2를 이용하면 가볍게 지원합니다.
현업에서 많이 사용되며 특히 전자정부프레임워크에도 사용되기 때문에 더욱 더 많이 사용되고 있습니다.
이번에는 막 생성된 스프링 프로젝트에 log4j2를 추가하는 방법에 대하여 간단하게 알아보도록 하겠습니다.
Spring Framework에서 log4j2 설정하기
maven을 사용하는 기준으로 pom.xml에 log4j2의 dependency를 추가해 줍니다.
1 2 3 4 5 6 7 8 9 10 11 |
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.18.0</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.18.0</version> </dependency> |
이후 /src/main/resources 경로 하단에 log4j2.xml 파일을 생성한 뒤에 아래 설정 파일을 복사해 줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="INFO"> <Properties> <Property name="logNm">Spring Log4j2</Property> <Property name="layoutPattern">%style{%d{yyyy/MM/dd HH:mm:ss,SSS}}{cyan} %highlight{[%-5p]}{FATAL=bg_red, ERROR=red, INFO=green, DEBUG=blue} [%C] %style{[%t]}{yellow} %m%n</Property> </Properties> <Appenders> <Console name="Console_Appender" target="SYSTEM_OUT"> <PatternLayout pattern="${layoutPattern}"/> </Console> <RollingFile name="File_Appender" fileName="logs/${logNm}.log" filePattern="logs/${logNm}_%d{yyyy-MM-dd}_%i.log.gz"> <PatternLayout pattern="${layoutPattern}"/> <Policies> <SizeBasedTriggeringPolicy size="1000KB"/> <TimeBasedTriggeringPolicy interval="1"/> </Policies> <DefaultRolloverStrategy max="10" fileIndex="min"/> </RollingFile> </Appenders> <Loggers> <Root level="INFO" additivity="false"> <AppenderRef ref="Console_Appender"/> <AppenderRef ref="File_Appender"/> </Root> <Logger name="org.springframework" level="DEBUG" additivity="false"> <AppenderRef ref="Console_Appender" /> <AppenderRef ref="File_Appender"/> </Logger> <!--하단 name에 본인이 사용하는 package명으로 수정할 것--> <Logger name="com.yeopbox.main.controller" level="INFO" additivity="false"> <AppenderRef ref="Console_Appender" /> <AppenderRef ref="File_Appender"/> </Logger> <Logger name="org.springframework" level="TRACE" additivity="false"> <AppenderRef ref="Console_Appender" /> </Logger> </Loggers> </Configuration> |
이후 원하는 위치에 아래와 같이 로그 파일들을 배치해 주시면 됩니다. (info,debug,warn은 상황에 맞추어 변경)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package com.yeopbox.main.controller; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class MainController { private static final Logger log = LogManager.getLogger(mainController.class); @RequestMapping("/") public String main(){ log.info("{} 들어옴.",System.currentTimeMillis()); return "index"; } } |
모두 적용하면 스프링 패키지는 아래와 같이 구성 됩니다. 저는 톰켓을 실행하기 전, maven 프로젝트를 clean 해 준 뒤 실행하였습니다.
톰캣으로 기동한 뒤 아래와 같이 정상적으로 log4j2에서 로그가 나타나는 것을 확인할 수 있습니다.
마치며…
이번에는 간단하게 log4j2를 spring framework에 추가하는 방법에 대하여 알아보았습니다.
log4j2의 경우 현업에서 많이 사용하기 때문에 프로젝트를 진행하기전에 한번 조금 알아두시는 것을 추천드립니다.
감사합니다.