언어/Java

[java]logback 설정하기 part2

antoroong 2025. 2. 8. 00:51

logback.xml 설정하기

 

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

<configuration>
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
		</encoder>
	</appender>

	<root level="debug">
		<appender-ref ref="STDOUT" />
	</root>
</configuration>

 

 

이렇게 했는데도 나는 콘솔에 log가 찍히지 않았다.

 

 

 

그리고 configuration 에 debug=”true”로 설정

<configuration debug="true">  <!— debug=”true”로 설정—>
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
			<encoder>
				<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
			</encoder>
	</appender>

	<root level="debug">
		<appender-ref ref="STDOUT" />
	</root>
</configuration>

 

 

아까 console.1의 캡처와 다르게 debug not set이라는 오류가 한줄 사라졌다..

이렇게 오류 한줄씩 없애 간다 ..ㅎㅎ

 

 

3. 문제 이제는 SQL쿼리를 출력해야하는데 나오지 않는다. logback.xml의 세팅값은

개발환경에 따라 내용이 다른것 같다 나는 strtus2 + ibatis + mysql 로 이루어진 구조라서

구글에 나온 코드로는 출력이 되지 않았다.. 이전에 쓰던 log4j.properties에 맞춰진 내용을 개조해봤다.

 

 

 

###############################################################
log4j.rootLogger=WARN, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] %m%n

log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

#SqlMap logging configuration - For Operation Server
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.BasicDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG

log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

#SqlMap logging configuration - For Developers
#log4j.logger.com.ibatis=DEBUG
#log4j.logger.com.ibatis.common.jdbc.BasicDataSource=DEBUG
#log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG

#log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
#log4j.logger.java.sql.Connection=DEBUG
#log4j.logger.java.sql.Statement=DEBUG
#log4j.logger.java.sql.PreparedStatement=DEBUG
#log4j.logger.java.sql.ResultSet=DEBUG
###############################################################

# ------------------------------------------------------- Category
log4j.category.org.apache.xml=WARN,A2
log4j.category.org.jcp.xml=WARN,A2
log4j.category.com.etri.saml2=WARN,A2
log4j.category.gov.mogaha.gpin=WARN,A2

# ------------------------------------------------------- Appender A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%d{MMM dd hh:mm:ss}] %p - %C{1}.%M(%L) | %m%n

# ------------------------------------------------------- Appender A2
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.File=/log/gpin-sp.log
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.DatePattern='.'yyyy-MM-dd
log4j.appender.A2.layout.ConversionPattern=%d{MMM dd hh:mm:ss.SSS aa} %p - [%t]%C{1}.%M(%L) | %m%n

 

 

log4j.properties

log4j 1.x 대쓰던 파일

이것을 개조하여

 

 

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

<!-- 
[Layout]
%d : 날짜
%n : new line
%t : thread
%p : 로깅레벨
%c : 로깅이 발생한 카테고리
%C : 로깅이 발생한 클래스명
%m : 로깅 메세지
-->

<configuration debug="true">

  <property name="log_home" value="/log" />
  <timestamp key="year" datePattern="yyyy"/>
  <timestamp key="month" datePattern="MM"/>
  <timestamp key="day" datePattern="dd"/>
  <timestamp key="date" datePattern="yyyy-MM-dd"/>

  <!-- 콘솔로 로그를 남기는 설정 -->
  <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <charset>UTF-8</charset>
<!--       <Pattern>%5p [%t] %m%n</Pattern> -->
<!--       <Pattern>%d %contextName [%t] %level %logger{36} - %msg%n</Pattern> -->
<!--       <Pattern>%d %5p [%c] %m%n</Pattern> -->
      <Pattern>[%d{yyyy-MM-dd HH:mm:ss}] [%p] [%t] [%c]%m%n</Pattern>
<!--       <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> -->
    </encoder>
  </appender>


  <!-- 파일로 로그를 남기는 설정 RollingFileAppender -->
  <appender name="rolling" class="ch.qos.logback.core.rolling.RollingFileAppender">
  
	<!--저장경로/파일명 -->
    <file>${log_home}/${year}/${month}/${day}/web_${date}.log</file>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <Pattern>[%d{yyyy-MM-dd HH:mm:ss}] [%p] [%t] [%c] %m%n</Pattern>
    </encoder>

    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
		<!--파일명을 .zip .tz로 하는경우 자동으로 압축된다 -->
      <fileNamePattern>${log_home}/${year}/${month}/web_${date}_%i.log.zip</fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>10</maxIndex>
    </rollingPolicy>

    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>200MB</maxFileSize>
    </triggeringPolicy>
  </appender>

 <!-- 파일로 로그를 남기는 설정 FileAppender -->   
<!--    <appender name="file" class="ch.qos.logback.core.FileAppender"> -->
<!--     	<file>${log_home}/web.log</file> -->
<!--     	<append>true</append> -->
<!-- 	    <encoder> -->
<!-- 	      <pattern> -->
<!-- 				[%d{yyyy-MM-dd HH:mm:ss}] [%p] [%t] [%c]%m%n -->
<!-- 	      </pattern> -->
<!-- 	    </encoder> -->
<!--   </appender> -->


        <logger name="java.sql.Connection" level="DEBUG" appender-ref="console" />
        <logger name="java.sql.PreparedStatement" level="DEBUG" appender-ref="console" />
        <logger name="java.sql.ResultSet" level="DEBUG" appender-ref="console" />
<!--         <logger name="java.sql.Statement" level="DEBUG" appender-ref="console" /> -->
<!--         <logger name="com.ibatis" level="DEBUG" appender-ref="console" /> -->
<!--         <logger name="com.ibatis.common.jdbc.BasicDataSource" level="DEBUG" appender-ref="console" /> -->
<!--         <logger name="com.ibatis.common.jdbc.ScriptRunner" level="DEBUG" appender-ref="console" /> -->
<!--         <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="DEBUG" appender-ref="console" /> -->

  <!-- root는 글로벌 로거를 의미하며, 위의 logger에 해당하지 않으면 root 로거가 실행된다. -->
  <root level="off">
    <appender-ref ref="rolling" />
<!--     <appender-ref ref="file" /> -->
    <appender-ref ref="console" />
  </root>

</configuration>

 

logback.xml

 

logback.xml을 바꾸었다.

 

sql log도 잘찍혔고 기분이 좋았다,