본문 바로가기
프로그래밍/MyBatis

log4j 설정

by Youngs_ 2021. 12. 7.

파일들의 위치는 src/main/resources

log4j.properties

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1
# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4jdbc.log4j2.properties

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

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.freehoon.web">

		<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 -->

	<logger name="jdbc.sqltiming" additivity="false">

		<level value="warn" />

		<appender-ref ref="console"/> 

	</logger>

	

	<logger name="jdbc.sqlonly" additivity="false"> 

		<level value="info"/> 

		<appender-ref ref="console"/> 

	</logger>

	

	<logger name="jdbc.audit" additivity="false"> 

		<level value="warn"/>  

		<appender-ref ref="console"/> 

	</logger> 

    

	<logger name="jdbc.resultset" additivity="false">

		<level value="warn" />

		<appender-ref ref="console"/> 

	</logger>

     

	<logger name="jdbc.resultsettable" additivity="false"> 

		<level value="info"/>  

		<appender-ref ref="console"/> 

	</logger> 



	<!-- Root Logger -->

	<root>

		<priority value="warn" />

		<appender-ref ref="console" />

	</root>

	

</log4j:configuration>

 

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

	<!-- 콘솔로 로그를 남기는 설정 -->
  	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
	    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
	      	<charset>UTF-8</charset>
	      	<Pattern>[%d{yyyy-MM-dd HH:mm:ss}] [%p] [%t] [%c] %m%n</Pattern>
	    </encoder>
  	</appender>
	<!-- 출력되는 로그의 양 순서 : OFF < FATAL < ERROR < WARN < INFO < DEBUG < TRACE -->  
	<logger name="egovframework" level="debug"/>
	<logger name="org.springframework" level="error"/>
	<logger name="org.quartz.core.QuartzSchedulerThread" level="error"/>
	
	<logger name="java.sql" level="debug"/>
	<logger name="jdbc.sqlonly" level="off"/>			<!-- jdbc.sqlonly : SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여진다.  -->
	<logger name="jdbc.sqltiming" level="debug"/> 		<!-- jdbc.sqltiming : SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다.  -->
  	<logger name="jdbc.audit" level="off"/>				<!-- jdbc.audit : ResultSet을 제외한 모든 JDBC 호출 정보를 로그로 남긴다. 많은 양의 로그가 생성되므로 특별히 JDBC 문제를 추적해야 할 필요가 있는 경우를 제외하고는 사용을 권장하지 않는다.  -->
  	<logger name="jdbc.resultset" level="off"/> 		<!-- jdbc.resultset : ResultSet을 포함한 모든 JDBC 호출 정보를 로그로 남기므로 매우 방대한 양의 로그가 생성된다.  -->
  	<logger name="jdbc.resultsettable" level="off"/>	<!-- jdbc.resultsettable : SQL 결과 조회된 데이터의 table을 로그로 남긴다. -->
  	<logger name="jdbc.connection" level="debug"/>
  	
	<root level="debug">
		<appender-ref ref="console" />
	</root>

</configuration>

프로젝트의 web.xml

  	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath*:*-context.xml</param-value>
	</context-param>
	
	<context-param>
   		<param-name>log4jConfigLocation</param-name>
   		<param-value>classpath*:log4jdbc.log4j2.properties</param-value>
  	</context-param>

댓글