[스프링] Log4j 로그 찍기
by 배부른코딩로그💡 Log4j를 통해 서비스 로그를 기록해보자.
목표
- Log4j 관련 설정을 할 수 있다.
- 서비스 로그를 파일에 기록할 수 있다.
Log4j 설정하기
모든 서비스를 개발하는 과정에서 로그를 기록하는 것은 아주 중요하다.
스프링에서 자주 사용되는 log4j 라이브러리를 사용해보자!
단, 개발 환경은 Spring Legacy와 maven(pom.xml)이 기준이다.
① pom.xml
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.0.0.RELEASE</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> </dependencies>
② web.xml
<context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log/log4j.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>
③ log4j.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <!-- Console Log --> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %p [%c{5}] %m [%X{userId}]%n" /> </layout> </appender> <!-- Log Files Writer by Date--> <appender name="springFile" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="/LOG/spring.log"/> <param name="Append" value="true"/> <param name="DatePattern" value="'.'yyyy-MM-dd"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %p [%C{10}] %m [%X{userId}]%n" /> </layout> </appender> <!-- Only Error Log Files Writer by Date--> <appender name="errFile" class="org.apache.log4j.DailyRollingFileAppender"> <param name="Threshold" value="ERROR"/> <param name="File" value="/LOG/error.log"/> <param name="Append" value="true"/> <param name="DatePattern" value="'.'yyyy-MM-dd"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %5p [%C{1}] %m [%X{userId}]%n" /> </layout> </appender> <!-- Specific Package --> <logger name="org.apache.ibatis"> <level value="DEBUG"/> </logger> <logger name="org.springframework"> <level value="DEBUG"/> <appender-ref ref="springFile" /> </logger> <logger name="java.sql"> <level value="DEBUG"/> </logger> <!-- 기본 출력 설정 --> <root> <level value="DEBUG" /> <appender-ref ref="console" /> <appender-ref ref="errFile"/> <appender-ref ref="rollingFile"/> </root> </log4j:configuration>
①~③ 과정을 차근차근 진행 후, 원하는 레벨의 로그들을 기록하고, 파일로 남길 수 있다.
Log4j 경로 변경하기
추가적으로 log4j.xml의 경로 설정 방법도 알아둘 필요가 있다.
절대경로로 설정하면 로컬에서 테스트할 땐 편하지만, 테스트용과 배포용을 따로 만들거나 수정해야 하는 번거로움이 있다. 이를 해결하기 위해 아래와 같은 방법을 사용할 수 있다.
다음과 같은 방법으로 상대경로로 설정할 수 있습니다.
① web.xml
기본적으로 webapp.root로 사용합니다.
다만, Tomcat에 두 개 이상의 서비스를 구동할 경우 충돌이 일어날 수 있음에 주의해야 한다.
위의 간단한 해결 방법은 경우 다른 이름으로 선언하면 된다.
<context-param> <param-name>webAppRootKey</param-name> <param-value>app.root</param-value> </context-param>
② log4j.xml
아래 코드와 같이 ${app.root} 를 통하여 web.xml에 선언한 contextParam을 불러올 수 있다.
해당 경우, 배포될 폴더 '/WEB-INF/logs' 이하에 로그 파일들이 위치하게 된다.
<appender name="FILE_APPENDER" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="${app.root}/WEB-INF/logs/css_log.log"/> <param name="Append" value="true"/> <param name="maxFileSize" value="10MB"/> <param name="maxBackupIndex" value="10"/> <param name="DatePattern" value="'.'yyyy-MM-dd"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %p [%c] - %m%n"/> </layout> </appender>
이상으로 로그 찍기 끗!!!
Last Updated. 2021. 10. 26.
반응형
블로그의 정보
배부른코딩로그
배부른코딩로그