어느 비전공자의 개발일지

log4j2 사용법/적용하는법 본문

백엔드 개발자/에디터

log4j2 사용법/적용하는법

vndn629 2023. 4. 11. 08:00

 

 

1. pom.xml 수정

<!-- log4j2 로그 추가 -->
		  <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>

 


 

 

 

2. slf4j 추가

 

<!-- SLF4J를 통해 log4j를 처리하고 있으므로 관련한 dependency도 추가  -->
		 <dependency>
		    <groupId>org.apache.logging.log4j</groupId>
		    <artifactId>log4j-slf4j-impl</artifactId>
		    <version>2.13.1</version>
		  </dependency>

		<dependency>
		    <groupId>org.bgee.log4jdbc-log4j2</groupId>
		    <artifactId>log4jdbc-log4j2-jdbc4</artifactId>
		    <version>1.16</version>
		</dependency>

 

 

 

 

3. log4j.xml -> log4j2.xml로 파일명 수정

 

F2 눌러서 그냥 이름변경

 

 


 

 

4. properties 파일 생성

log4jdbc.drivers=org.mariadb.jdbc.Driver
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0

 

 

 

 

3.5번 root-context 수정 / drvierClassName과 url을 수정 

		<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy" />
		<property name="url" value="jdbc:log4jdbc:mariadb://000.000.000.00(주소):3306/DB명" />

 

 


 

 

4번. log4j2.xml 내용을 수정

 

<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

	<!-- Appenders -->
	<Appenders>
    	<Console name="console" target="SYSTEM_OUT">
        	<PatternLayout pattern="%-5p: %c - %m%n" />
        </Console>
	</Appenders>
	
	<!-- Application Loggers -->
    <Loggers>
        <Logger name="java.sql" level="DEBUG" additivity="false">
            <AppenderRef ref="console" />
        </Logger>
        <Logger name="egovframework" level="DEBUG" additivity="false">
            <AppenderRef ref="console" />
        </Logger>
        <Logger name="jdbc.sqltiming" level="DEBUG" additivity="false">
            <AppenderRef ref="console" />
        </Logger>
        <Logger name="org.springframework" level="DEBUG" additivity="false">
            <AppenderRef ref="console" />
        </Logger>
        <Logger name="jdbc.resultsettable" additivity="false"> 
            <level value="info" /> 
            <appender-ref ref="console-log4jdbc" />
        </Logger>
    </Loggers>
    
	<Root level="DEBUG">
			<AppenderRef ref="console" />
		</Root>
</Configuration>

 

 

 

------------ 결과

Console 창에 로그가 잘 찍히게 된다

DB(SQL)문 까지 찍히게 하고 싶으면?

<Loggers>

<!-- SQL문만을 로그 -->

<logger name="jdbc.sqlonly" level="OFF"/>

<!-- SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보 -->

<logger name="jdbc.sqltiming" level="DEBUG"/>

<!-- ResultSet을 제외한 모든 JDBC 호출 정보 -->

<logger name="jdbc.audit" level="OFF"/>

<!-- ResultSet을 포함한 모든 JDBC 호출 정보를 로그 -->

<logger name="jdbc.resultset" level="OFF"/>

<!-- SQL 결과 조회된 데이터의 table을 로그로 -->

<logger name="jdbc.resultsettable" level="DEBUG"/>

<Logger name="org.springframework" level="DEBUG"/>

</Loggers>

 

 

 

 

반응형