광고 한 번씩 클릭해 주시면 글 쓰는데 큰 힘이 됩니다 (제발~)

IT/Java

log4j2 사용 db관련 jdbc 로그 출력 관련 정리

ThinkTheStory 2022. 7. 8. 14:20
728x90

기본적인 뻔한 내용은 패스하고 포인트만 정리하자.

 

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

        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout charset="UTF-8" pattern="[log4j]%d %5p [%c] %m{nolookups}%n" />
        </Console>
<!--         <RollingFile name="file" fileName="${log4j:configParentLocation}/../../logs/console.log" filePattern="${log4j:configParentLocation}/../../logs/$${date:yyyy-MM-dd}/console-%d{yyyy-MM-dd}-%i.log"> -->
<!--  <PatternLayout charset="UTF-8" pattern="[log4j]%d %5p [%c] %m%n" /> -->
<!--  <Policies> -->
<!--  size 단위: Byte(default), KB, MB, or GB -->
<!--  <OnStartupTriggeringPolicy /> -->
<!--  <SizeBasedTriggeringPolicy size="3 MB" /> -->
<!--  <TimeBasedTriggeringPolicy /> -->
<!--  </Policies> -->
<!--  <DefaultRolloverStrategy min="1" max="100" fileIndex="max" /> -->
<!--  </RollingFile> -->
    </Appenders>
    <Loggers>
        <Logger name="java.sql" level="OFF" additivity="false">
            <AppenderRef ref="console" />
        </Logger>
        <Logger name="egovframework" level="OFF" additivity="false">
            <AppenderRef ref="console" />
        </Logger>
  <!-- log SQL with timing information, post execution -->
    <Logger name="jdbc.sqltiming" level="DEBUG" additivity="false">
        <AppenderRef ref="console" />
    </Logger>
    <Logger name="org.springframework" level="OFF" additivity="false">
        <AppenderRef ref="console" />
    </Logger>
    <Logger name="java.sqlonly" level="OFF" additivity="false">
<AppenderRef ref="console" />
</Logger>
<logger name="jdbc.resultset" level="OFF" additivity="false">
<appender-ref ref="console" />
</logger>
<logger name="jdbc.resultsettable" level="OFF" additivity="false">
<appender-ref ref="console" />
</logger>
<logger name="jdbc.audit" level="ERROR" additivity="false">
<appender-ref ref="console" />
</logger>

        <Root level="INFO">
            <AppenderRef ref="console" />
        </Root>
    </Loggers>
</Configuration>

 

뭐 대부분 대충 이런식으로 일단 나올거고~

여기서 포인트는 어떤 로그를 내가 선택해서 할거냐인데~

 

320x100

 

SQL

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

=> SQL문만을 로그로 남기게 되고~ PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여준다

 

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

=> SQL문과 수행된 시간을 로그로 남기게 되고,  시간정보는 milliseconds로 보여준다.

 

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

=> ResultSet을 제외한 모든 JDBC 정보를 로그로 남기게 되고, 불필요한 로그가 많이 남기게 되, 특별한 상황을 제외하고는 사용안하는게 좋다


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

=> ResultSet을 포함한 모든 JDBC 정보를 로그로 남기게 되고, 불필요한 로그가 많이 남기게 되, 특별한 상황을 제외하고는 사용안하는게 좋다

 

TABLE

<logger name="jdbc.resultsettable" level="OFF"> 

=> SQL 결과 조회된 데이터를 table 형식으로 보여준다.

 

 

320x100