2024. 6. 19. 13:27ㆍIT 개발 관련(Java, Spring, JavaScript)
현업에서 로그관리는 매우 중요하다. 필자는 생성되는 로그파일을 따로 정해진 디렉토리에 떨어뜨려서 관리를 했었다.
내가 처음부터 구현해본적이 없어서 잘 모르다가 마침 이클립스로, 개인프로젝트 (스프링 MVC패턴 : 로그인 ~ 게시판 구현)을 하고 있는데 DB쿼리가 콘솔에 안찍혀서 검색을 해보았다.
DB 쿼리를 콘솔에 찍히게 하는것만 설명하겠다. 나머지는 이를 응용해서 하면 된다. 추가하게되면 이 게시글에 추가하겠다.
1. 프로젝트 pom.xml에 의존성을 추가한다.
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.16</version>
</dependency>
2. root-context.xml (또는 dataSource-context.xml) 설정을 아래와 같이 변경한다. 참고로 필자는 mysql을 사용함
<기존>
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="org.mariadb.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/데이터베이스이름?useUnicode=true&characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="비밀번호" />
</bean>
<변경>
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<!-- <property name="driverClassName" value="org.mariadb.jdbc.Driver" /> -->
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"/>
<property name="url" value="jdbc:log4jdbc:mariadb://localhost:3306/데이터베이스이름?useUnicode=true&characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="비밀번호" />
</bean>
3. src > main > resource 아래 경로에 log4jdbc.log4j2.properties 파일과 log4j.xml파일 추가
<log4jdbc.log4j2.properties 내용>
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.drivers=org.mariadb.jdbc.Driver
<log4j.xml 내용>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>
<!-- Application Loggers -->
<logger name="com.myproject.controller">
<level value="info" />
</logger>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
<level value="info" />
</logger>
<logger name="org.springframework.beans">
<level value="info" />
</logger>
<logger name="org.springframework.context">
<level value="info" />
</logger>
<logger name="org.springframework.web">
<level value="info" />
</logger>
<!-- SQL 로그 출력을 위한 설정 추가 시작 -->
<logger name="jdbc.sqlonly" additivity="false">
<level value="debug"/>
<appender-ref ref="console"/>
</logger>
<logger name="jdbc.sqltiming" additivity="false">
<level value="debug" />
<appender-ref ref="console"/>
</logger>
<logger name="jdbc.audit" additivity="false">
<level value="debug"/>
<appender-ref ref="console"/>
</logger>
<logger name="jdbc.resultset" additivity="false">
<level value="debug" />
<appender-ref ref="console"/>
</logger>
<logger name="jdbc.resultsettable" additivity="false">
<level value="debug"/>
<appender-ref ref="console"/>
</logger>
<!-- SQL 로그 출력을 위한 설정 추가 끝 -->
<!-- Root Logger -->
<root>
<priority value="warn" />
<appender-ref ref="console" />
</root>
</log4j:configuration>
4. 결과

'IT 개발 관련(Java, Spring, JavaScript)' 카테고리의 다른 글
$(document).ready(function() {}); (0) | 2024.07.01 |
---|---|
css 파일 jsp에 import하기 (0) | 2024.06.20 |
Quartz Scheduler (0) | 2024.06.17 |
자바스크립트 map을 활용한 사례 (0) | 2024.06.17 |
자바 JSON OBJ 를 toString 하는 과정을 뜯어보자 (0) | 2024.06.17 |