I T H

[스프링프로젝트연습 7] 스프링 프로젝트 구현 - Log4j2 연동 본문

Spring Basic

[스프링프로젝트연습 7] 스프링 프로젝트 구현 - Log4j2 연동

thdev 2024. 1. 22. 14:31
- 쿼리 구문 및 쿼리에 사용된 파라미터 (?) PreparedStatement의 대입된 값을 자세하게 보기 위해 시스템 로그에 출력하기로 한다.
- 상세한 로그를 기록하기 위해 log4jdbc-log4j2 라이브러리를 사용

 

- 해당 문서에서는 log4j2 라이브러리를 적용함으로써 시스템 로그에 상세 쿼리 로그를 기록하는 방법을 설명함.

[resources 폴더 확인 및 생성]

- src/main 폴더 아래에 resources 폴더가 없는 경우 아래와 같이 생성을 먼저 진행한다.

 

[프로젝트 패키지 경로 수정]

- build path 설정을 통해 src/main 패키지 아래에 resources 패키지가 포함되도록 설정을 변경한다.

1. Add Folder를 클릭한다.

2. Source Folder Selection 팝업창에서 resources를 체크 > OK 클릭

3. java Build Path > Order and Export 탭에서 src/main/resources 항목에 추가되었는지 확인 > Apply and Colose 

 

1번)

2번)

3번)

 

백앤드쪽에 src/main/resources 가 생긴 것을 볼수있음.

 

 

[pom.xml 파일 수정]

- Log4j2 라이브러리 연동을 위한 태그 설정

<!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1 -->
<dependency>
	<groupId>org.bgee.log4jdbc-log4j2</groupId>
	<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
	<version>1.16</version>
</dependency>

<!-- * slf4j (slf4j 인터페이스와 log4j2를 연결해주는 모듈 역할)  * 취약점 없는 최신버전으로 수정 -->
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl -->
<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-slf4j-impl</artifactId>
	<version>2.17.2</version>
</dependency>    

<!-- * log4j api / core -->
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-core</artifactId>
	<version>2.17.2</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-api</artifactId>
	<version>2.17.2</version>
</dependency>

 

라이브러리 참고 사이트
log4jdbc-log4j2-jdbc4.1 https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1
log4j-slf4j-impl https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl
log4j-core https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core
log4j-api https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api

 

[Log4j2 설정 관련 파일 생성 ]

 

- 앞서 생성한 src/main/resources (백앤드쪽) 패키지 아래에  파일 2개를 생성한다.

 

ㄱ.  log4jdbc.log4j2.properties 파일 생성 후 아래 내용 추가

 

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0

 

ㄴ. log4j2.xml 파일 생성

<?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>
   	 <!--INFO는 모든것을 다찍음. -->
        <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="kr.co.values" level="DEBUG" 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>

 

[최종 폴더 구성]

 

 

-  WAS 재시작 후 재접속 시 시스템 로그에 아래와 같이 로그 기록이 되는지 확인!