everyday com-eat
카테고리
작성일
2022. 2. 22. 15:11
작성자
갱수터
728x90

log4j 설정하기

 

pom.xml설정

1. 라이브러리 설치

<!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1 -->
<dependency>
    <groupId>org.bgee.log4jdbc-log4j2</groupId>
    <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
    <version>1.16</version>
</dependency>

 

 

 

 

src/main/resources 설정

2. properties 및 log.xml 업로드

log4jdbc.log4j2.properties
0.00MB
logback-spring.xml
0.00MB

log-back.xml 설정

더보기

1. 변수 및 로그패턴설정

<?xml version="1.0" encoding="UTF-8"?>
<!--  
jdbc.sqlonly    : Logs only SQL
jdbc.sqltiming  : Logs the SQL, post-execution, including timing execution statistics
jdbc.audit      : Logs ALL JDBC calls except for ResultSets
jdbc.resultset  : all calls to ResultSet objects are logged
jdbc.connection : Logs connection open and close events
-->
<configuration>
    <!-- 변수 지정 -->
    <property name="LOG_DIR" value="src/main/resources/logs" />
    <property name="LOG_PATH_NAME" value="${LOG_DIR}/application.log" />

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

 

2. 로깅 설정

<?xml version="1.0" encoding="UTF-8"?>
<!--  
jdbc.sqlonly    : Logs only SQL
jdbc.sqltiming  : Logs the SQL, post-execution, including timing execution statistics
jdbc.audit      : Logs ALL JDBC calls except for ResultSets
jdbc.resultset  : all calls to ResultSet objects are logged
jdbc.connection : Logs connection open and close events
-->
<configuration>

    <!-- 프로젝트 패키지 안 클래스에 설정된 로그 출력 -->
    <logger name="ksmart42.mybatis" level="INFO" additivity="false">
       <appender-ref ref="STDOUT" />
    </logger>

    <!-- log4jdbc 옵션 설정 --> 
    <logger name="jdbc" level="OFF" additivity="false">
       <appender-ref ref="STDOUT" />
    </logger> 

    <!-- 커넥션 open close 이벤트를 로그 --> 
    <logger name="jdbc.connection" level="OFF" additivity="false">
       <appender-ref ref="STDOUT" />
    </logger> 

    <!-- SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문 출력 --> 
    <logger name="jdbc.sqlonly" level="OFF" additivity="false">
       <appender-ref ref="STDOUT" />
    </logger> 

    <!-- SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함하여 출력. --> 
    <logger name="jdbc.sqltiming" level="INFO" additivity="false">
       <appender-ref ref="QSTDOUT" />
    </logger> 

    <!-- ResultSet을 제외한 모든 JDBC 호출 정보를 로그 출력, 많은 양의 로그가 생성되므로 특별히 JDBC 문제를 추적해야 할 필요가 있는 경우를 제외하고는 권장 안함. --> 
    <logger name="jdbc.audit" level="OFF" additivity="false">
       <appender-ref ref="STDOUT" />
    </logger> 

    <!-- ResultSet을 포함한 모든 JDBC 호출 정보를 로그로 남기므로 매우 방대한 양의 로그가 생성된다. --> 
    <logger name="jdbc.resultset" level="OFF" additivity="false">
       <appender-ref ref="STDOUT" />
    </logger> 

    <!-- SQL 결과 조회된 데이터의 table로 표현하여 로그 출력 --> 
    <logger name="jdbc.resultsettable" level="OFF" additivity="false">
       <appender-ref ref="STDOUT" />
    </logger>
    
    <!-- 필수 -->
    <root level="ERROR">
       <appender-ref ref="STDOUT" />
    </root>
</configuration>

 

3. application.properties 설정

#db 연결정보 log4jdbc datasource 설정
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url=jdbc:log4jdbc:mysql://localhost:3306/ksmart42db?serverTimezone=UTC&characterEncoding=UTF8
spring.datasource.username=ksmart42id
spring.datasource.password=ksmart42pw

# log 설정파일 위치
logging.config=classpath:logback-spring.xml

# spring banner 파일 경로 설정
spring.banner.location=classpath:templates/banner.txt

banner.txt
0.00MB
banner2.txt
0.01MB

 

 

 

[preperences] 설정

4. Content Types > encoding 설정

*.properties 추가

 

 

 

5. Controller에서 log 호출하기

클래스 내 log 자동완성으로 

필드 설정 후 메서드 안에

원하는 레벨의 메서드 호출.

빌드 해보면

 

 

log4j LEVEL

로그 레벨 설      명
fatal 아주 심각한 에러가 발생한 상태 
error 요청을 처리하는 중 문제가 발생한 상태 
warn 처리 가능한 문제, 향후 에러의 원인이 될 수 있는 경고 메세지 
info 로그인, 상태 변경과 같은 정보 메세지
debug 개발 시 디버그 용도로 사용한 메시지
trace 신규 추가된 레벨로 디버그 레벨이 넘 광범위한 것을 해결하기 위해서 좀 더 상세한 상태를 나타냄

 

log4j LAYOUT

형식 설      명
%P  debug, info, warn, error, fatal 등 priority 출력 
%m  로그 내용 출력  
%d  발생 시간 출력 
%t  발생 쓰레드의 이름 출력 
%n  개행 문자 출력 
%c  패키지 출력 / {숫자} 를 이용하여 단계별 출력, ex) %x{5} 
%C   클래스 명 출력 / {숫자} 를 이용하여 단계별 출력, ex) %x{5}   
%L  로깅이 발생한 caller 의 라인 수 출력 

 

 

728x90