전자정부프레임워크 log4j -> logback 변경 적용

아무튼 간에·2022년 6월 22일
0

개발환경

OS: Windows 11
IDE: Spring Tool Suite 4.14.1
JAVA: 1.8.0_333
Tomcat: 8.5


상황

연구과제를 위해 타사에서 개발하던 소스를 받아서 웹을 구성하려고 함.
전반적으로 소스를 훑어보니 전자정부프레임워크를 사용한 아주 옛날에 작성된 것으로 판단됨. 전자정부프레임워크 처음 봄...
iBatis, log4j 등을 사용 중이었고 logger 대신 모두 System.out.println으로 로깅과 디버깅을 대신한 것으로 보임. 이를 logback으로 대체하고 System.out.println을 제거하기로 함.


해결

log4j 관련 모듈 제거 후 logback.xml로 구성 잡아줌

1. pom.xml에서 log4j 관련 모듈 제거

  • 기존 pom.xml
...
<dependencies>
	<!-- 표준프레임워크 실행환경 -->
    <dependency>
		<groupId>egovframework.rte</groupId>
		<artifactId>egovframework.rte.ptl.mvc</artifactId>
		<version>${egovframework.rte.version}</version>
		<!-- 삭제 -->
		<exclusions>
			<exclusion>
		    	<artifactId>commons-logging</artifactId>
				groupId>commons-logging</groupId>
			</exclusion>
		</exclusions>
		<!-- //삭제 -->
	</dependency>
    <dependency>
		<groupId>egovframework.rte</groupId>
		<artifactId>egovframework.rte.psl.dataaccess</artifactId>
		<version>${egovframework.rte.version}</version>
	</dependency>
    <dependency>
		<groupId>egovframework.rte</groupId>
		<artifactId>egovframework.rte.fdl.idgnr</artifactId>
		<version>${egovframework.rte.version}</version>
	</dependency>
    <dependency>
		<groupId>egovframework.rte</groupId>
		<artifactId>egovframework.rte.fdl.property</artifactId>
		<version>${egovframework.rte.version}</version>
	</dependency>
    ...
    <!-- 삭제 -->
    <dependency>
        <groupId>com.googlecode.log4jdbc</groupId>
        <artifactId>log4jdbc</artifactId>
        <version>1.2</version>
		<exclusions>
			<exclusion>
                <artifactId>slf4j-api</artifactId>
            	<groupId>org.slf4j</groupId>
        	</exclusion>
    	</exclusions>
	</dependency>
    <!-- //삭제 -->
    ...
    <!-- 삭제 -->
    <dependency>
		<groupId>org.apache.logging.log4j</groupId>
		<artifactId>log4j-core</artifactId>
		<version>2.15.0</version>
	<dependency>

	<dependency>
		<groupId>org.apache.logging.log4j</groupId>
		<artifactId>log4j-slf4j-impl</artifactId>
		<version>2.0</version>
	</dependency>				
		
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>jcl-over-slf4j</artifactId>
		<version>1.7.7</version>
	</dependency>

	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>log4j-over-slf4j</artifactId>
		<version>1.7.7</version>
	</dependency>
	<!-- //삭제 -->
	...
</dependencies>

2. pom.xml에서 logback 관련 dependency 추가

  • 수정된 pom.xml
<dependencies>
	<!-- 표준프레임워크 실행환경 -->
    ...
    <!-- 추가(전자정부프레임워크 로깅 모듈) -->
    <dependency>
		<groupId>egovframework.rte</groupId>
		<artifactId>egovframework.rte.fdl.logging</artifactId>
		<version>${egovframework.rte.version}</version>
		<exclusions>
			<exclusion>
            	<groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-slf4j-impl</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>log4j-over-slf4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- //추가(전자정부프레임워크 로깅 모듈) -->
    
	<!-- 추가(logback)-->
	<dependency>
		<groupId>ch.qos.logback</groupId>
		<artifactId>logback-core</artifactId>
		<version>1.2.9</version>
	</dependency>
	<dependency>
		<groupId>ch.qos.logback</groupId>
		<artifactId>logback-classic</artifactId>
		<version>1.2.9</version>
	</dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>jul-to-slf4j</artifactId>
		<version>1.7.32</version>
	</dependency>
	<!-- //logback(logback)-->
    ...
</dependencies>

추가(전자정부프레임워크 로깅 모듈): 기존에 작성된 pom.xml엔 없었음. 이 부분이 없으면 오류는 나지 않으나 로그가 아예 출력되지 않음.

3. src/main/resources/ 하위에 logback.xml 생성

  • logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	   
    <!-- 패턴 지정 -->
    <!-- [%d{yyyy-MM-dd HH:mm:ss}] [%-5level] [%thread] %logger{36} - %msg%n -->
    <property name="FILE_LOG_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss}] [%-5level] %logger{36} - %msg%n"/>
    
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

	<!-- 쿼리 조회 결과 로깅 X -->
	<logger name="java.sql.ResultSet">
		<level value="OFF" />
	</logger>

    <root level="DEBUG">
        <appender-ref ref="CONSOLE" />
    </root>
    
</configuration>

참고

profile
armton garnet

0개의 댓글